home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
ast_comp
/
concurre.tar
/
concurrency
/
man.tex
(
.txt
)
< prev
next >
Wrap
LaTeX Document
|
1993-07-05
|
130KB
|
2,329 lines
% -*- Latex -*-
\documentstyle[11pt]{article}
%\pagestyle{empty}
\headheight 0pt
\headsep 0pt
\textheight 652.4pt
\topmargin 0pt
\long\def\comment#1{}
\newenvironment{definition}{\par\medskip\addtocounter{theorem}{1}%
\noindent{\bf Definition \arabic{theorem}}\quad
}{\hfill\qed\quad\medskip}
\def\A{{\bf\mbox{$\cal A$}}}
\def\B{{\bf\mbox{$\cal B$}}}
\def\C{{\bf\mbox{$\cal C$}}}
\def\D{{\bf\mbox{$\cal D$}}}
\def\E{{\bf\mbox{$\cal E$}}}
\def\I{{\bf\mbox{$\cal I$}}}
\def\T{{\bf\mbox{$\cal T$}}}
\def\X{{\bf\mbox{$\cal X$}}}
\def\Y{{\bf\mbox{$\cal Y$}}}
\def\one{{\bf 1}}
\def\two{{\bf 2}}
\def\three{{\bf 3}}
%\def\R{{\mbox{${\bf\bar R}_+$}}}
\def\R{{\bf R}}
\def\Rdp{{\bf R}^{\tt d}}
\def\N{{\mbox{\bf N}}}
\def\Set{{\bf Set}}
\def\SET{{\bf SET}}
\def\SSM{{\bf COSMON}}
\def\Seti{{\bf Seti}}
\def\Pos{{\bf Pos}}
\def\Pom{{\bf Pom}}
\def\Pros{{\bf Pros}}
\def\Prom{{\bf Prom}}
\def\Pomi{{\bf Pomi}}
\def\Cat{{\bf Cat}}
\def\CAT{{\bf CAT}}
\def\Grph{{\bf Grph}}
\def\Hom{{\rm Hom}}
\def\op{^{\rm op}}
\def\ob{{\rm ob}}
\def\min{{\rm min}}
\def\max{{\rm max}}
\def\SR{{\mathord{\bf SR}}}
%\def\DC{\D{\mbox -}\Cat}
%\def\DpC{\D'{\mbox -}\Cat}
\def\Z2{{\mbox{\bf Z$_2$}}}
\def\DYN{{\mbox{\bf DYN}}}
\def\TMP{{\mbox{\bf TMP}}}
\def\d{\delta}
\def\comma{\mathop{\rhd}}
\def\lc{\underline{;}}
\def\ll{\underline{\lambda}}
\def\darrow{\mathop{\downarrow}} % let's flush this, ok?
\def\vertex{\mathop{\rm vert}}
\def\
#1{\stackrel{#1}{\longrightarrow}}
\let\
=\darrow
\def\<#1>{\langle #1 \rangle}
\def\eqalign#1{\vbox{\halign{\hfil$##$&$\quad##$\hfil\cr #1}}}
\def\congh{\raise0.5ex\hbox{$\smash\cong$}}
\def\UV{U\
\def\Tau{T}
\def\qed{\vrule height6pt width4pt depth0pt} % end-of-proof etc.
\mathcode`\:="603A
\newtheorem{theorem}{Theorem}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newenvironment{proof}{\medskip\noindent{\it Proof}:\quad}{\quad\qed\medskip}
\newenvironment{proofo}{\medskip\noindent{\it Outline of Proof}:\quad}{\quad\qed\medskip}
%%======================================================================%
%% TeX macros for drawing rectangular category-theory diagrams %
%% %
%% Paul Taylor %
%% %
%% Department of Computing, Imperial College, London SW7 2BZ %
%% +44 1 589 5111 x 5057 pt@doc.ic.ac.uk %
%% %
%% For user documentation, see "diagram.doc.tex" %
%% %
%% COPYRIGHT NOTICE: %
%% This package may be copied and used freely for any academic %
%% (not commercial or military) purpose, on condition that it %
%% is not altered in any way, and that an acknowledgement is %
%% included in any published paper using it. %
%% %
%%======================================================================%
\message{<Paul Taylor's commutative diagrams, 20 December 1989>} \let\then
\relax\font\tenln=line10 \newdimen\zpt\zpt=0pt \def\tozpt{to \zpt}
\mathchardef\lt="313C \mathchardef\gt="313E
\newif\ifincommdiag\incommdiagfalse
\def\diagram{\bgroup\incommdiagtrue\null\baselineskip3.8ex \lineskip\zpt
\lineskiplimit\zpt\mathsurround\zpt\tabskip\zpt\let\\\cr\,\vcenter\bgroup
\halign\bgroup\hfil$##$\hfil&&\hfil$##$\hfil\cr\mathstrut\cr}
\def\enddiagram{\crcr\mathstrut\crcr\egroup\horizreformatmatrix\egroup\,%
\egroup}
\def\commdiag#1{{\diagram#1\enddiagram}}
\def\across#1{\span\omit\mscount=#1 \loop\ifnum\mscount>2 \spAn\repeat
\ignorespaces} \def\spAn{\relax\span\omit\advance\mscount by -1}
\def\horizreformatmatrix{\bombparameters\skip7=\zpt\setbox8=\vbox{}\loop
\setbox9=\lastbox\ifhbox9 \horizreformatrow\setbox8=\vbox{\box9\vskip\skip7%
\unvbox8}\skip7=\lastskip\unskip\repeat\vskip\skip7 \unvbox8 }
\def\horizreformatrow{\setbox9=\hbox{\unhbox9\setbox5=\box9\spanspace\zpt
\prevspace\zpt\skip9=\lastskip\unskip\setbox6=\hbox{}\loop\setbox7=\lastbox
\ifhbox7\setbox0=\hbox{\unhcopy7}\hsize=.5\wd0 \ourspace=.5\wd7 \advance
\ourspace-.5\wd0 \horizreformatcell\skip8=\lastskip\unskip\repeat\hskip\skip8%
\ifhbox5\box5\fi\unhbox6}}
\def\bombparameters{\parfillskip\zpt minus10\hsize\linepenalty9000\parskip
\zpt\parindent\zpt\everypar{}\pretolerance10000 \tolerance10000 \hyphenpenalty
10000 \exhyphenpenalty10000 \adjdemerits0 \doublehyphendemerits0
\finalhyphendemerits0 \leftskip\zpt\rightskip\zpt\looseness0 \hfuzz10\hsize}
\def\addtobomblist{\global\setbox6=\hbox{\box7\hskip\skip8\ifhbox5\ifdim
\ourspace=\zpt\then\box5\else\hbox to\wd5{\kern-\ourspace\unhbox5}\fi\fi
\unhbox6}}
\newdimen\prevspace\newdimen\ourspace\newdimen\spanspace
\def\horizreformatcell{\setbox0=\vtop{\noindent\unhcopy0\endgraf\ifcase
\prevgraf\global\advance\spanspace\ourspace\global\ourspace\zpt\addtobomblist
\or\global\prevspace=\ourspace\addtobomblist\or\setbox2=\lastbox\unskip
\unpenalty\setbox1=\lastbox\global\setbox7=\hbox to.5\wd7{\kern\spanspace
\unhbox2 \unskip\unskip\unpenalty\global\advance\prevspace2\spanspace\kern-%
\prevspace\hskip\parfillskip}\global\ourspace\zpt\prevspace=\wd7
\addtobomblist\global\setbox5=\hbox to\prevspace{\unhbox1 \unskip\unpenalty
\kern-\spanspace\global\spanspace\zpt\hskip\parfillskip}\global\prevspace\zpt
\fi}}
\newif\ifmoremapargs\newif\ifmapargisupper
\def\gettwoargs{\let\upperlabel\empty\let\lowerlabel\empty\moremapargstrue
\mapargisuppertrue\def\cmd{\mapargisupperfalse\ifmoremapargs\then\let\next
\whatis\let\cmd\thecmd\else\let\next\thecmd\fi\next}\whatis}
\def\whatis{\futurelet\thenexttoken\showcat}
\def\getlabeldocmd#1{\ifmapargisupper\def\upperlabel{#1}\else\def\lowerlabel{%
#1}\fi\cmd}
\def\eattokengetlabeldocmd#1{\getlabeldocmd}
\def\eatspacerepeat{\afterassignment\whatis\let\junk= }
\def\catcase#1:#2\esac#3\esacs{{\ifcat\noexpand\thenexttoken#1\gdef\next{#2}%
\else\gdef\next{#3\esacs}\fi}\next}\def\tokcase#1:#2\esac#3\esacs{{\ifx
\thenexttoken#1\gdef\next{#2}\else\gdef\next{#3\esacs}\fi}\next}\def\default:%
#1\esac#2\esacs{#1}\let\esacs\relax
\def\showcat{\catcase\egroup:\moremapargsfalse\cmd\esac\catcase{&}:%
\moremapargsfalse\cmd\esac\catcase$:\moremapargsfalse\cmd\esac\catcase^:%
\mapargisuppertrue\eattokengetlabeldocmd\esac\catcase_:\mapargisupperfalse
\eattokengetlabeldocmd\esac\catcase{ }:\eatspacerepeat\esac\tokcase{\cr}:%
\moremapargsfalse\cmd\esac\tokcase{\crcr}:\moremapargsfalse\cmd\esac\tokcase
\end:\moremapargsfalse\cmd\esac\tokcase\enddiagram:\moremapargsfalse\cmd\esac
\tokcase\across:\moremapargsfalse\cmd\esac\tokcase\relax:\moremapargsfalse
\cmd\esac\tokcase\kern:\moremapargsfalse\cmd\esac\tokcase\mkern:%
\moremapargsfalse\cmd\esac\default:\ifincommdiag\then\let\next\getlabeldocmd
\else\moremapargsfalse\let\next\cmd\fi\next\esac\esacs}
\newdimen\HorizontalLineHeight\HorizontalLineHeight0.628ex \newdimen
\HorizontalLineDepth\HorizontalLineDepth-0.534ex \def\horizhtdp{height%
\HorizontalLineHeight depth\HorizontalLineDepth} \newdimen
\HorizontalMapLength\HorizontalMapLength5em \def\makeharrowpart#1{\hbox{%
\mathsurround\zpt$\mkern-1.5mu{#1}\mkern-1.5mu$}} \def\justhorizline{-}
\def\HorizontalMap#1#2#3#4#5{\setbox1=\makeharrowpart{#1}\def\arrowfillera{#2%
}\def\arrowfillerb{#4}\setbox5=\makeharrowpart{#5}\ifx\arrowfillera
\justhorizline\then\def\arra{\hrule\horizhtdp}\def\kea{\kern-0.01em}\let
\arrstruthtdp\horizhtdp\else\def\kea{\kern-0.15em}\setbox2=\hbox{\kea${%
\arrowfillera}$\kea}\def\arra{\copy2}\def\arrstruthtdp{height\ht2 depth\dp2 }%
\fi\ifx\arrowfillerb\justhorizline\then\def\arrb{\hrule\horizhtdp}\def\keb{%
kern-0.01em}\ifx\arrowfillera\empty\then\let\arrstruthtdp\horizhtdp\fi\else
\def\keb{\kern-0.15em}\setbox4=\hbox{\keb${\arrowfillerb}$\keb}\def\arrb{%
\copy4}\ifx\arrowfilera\empty\then\def\arrstruthtdp{height\ht4 depth\dp4 }\fi
\fi\setbox3=\makeharrowpart{{#3}\vrule width\zpt\arrstruthtdp} \dimen3=\wd3
\let\thecmd\execHorizontalMap\gettwoargs}
\def\labelstyle{\ifincommdiag\textstyle\else\scriptstyle\fi}
\def\execHorizontalMap{\setbox6=\hbox{$\quad\labelstyle\upperlabel\quad$}%
\setbox7=\hbox{$\quad\labelstyle\lowerlabel\quad$}\dimen0=\wd6 \ifdim\dimen0<%
\wd7\then\dimen0=\wd7\fi\ifdim\dimen0<\HorizontalMapLength\then\dimen0=%
\HorizontalMapLength\fi\skip2=.5\dimen0 \ifincommdiag plus 1fill\fi minus\zpt
\advance\skip2-.5\wd3 \skip4=\skip2 \advance\skip2-\wd1 \advance\skip4-\wd5
\kern0.4em \box1 \xleaders\arra\hskip\skip2 \vbox\ifincommdiag\tozpt\fi{%
\offinterlineskip\ifincommdiag\vss\fi\hbox to\dimen3{\hss\unhbox6\hss}\kern0.%
7ex \vtop\ifincommdiag\tozpt\fi{\box3 \kern0.7ex \hbox to\dimen3{\hss\unhbox7%
\hss}\ifincommdiag\vss\fi}}\ifincommdiag\kern-.5\dimen3\penalty-9999\null
\kern.5\dimen3\fi\xleaders\arrb\hskip\skip4 \box5 \kern0.4em }
\newdimen\VerticalMapHeight\VerticalMapHeight5ex \newdimen\VerticalMapDepth
\VerticalMapDepth4ex \newdimen\VerticalMapExtraHeight\VerticalMapExtraHeight
\zpt\newdimen\VerticalMapExtraDepth\VerticalMapExtraDepth\zpt\newdimen
\VerticalLineWidth\VerticalLineWidth0.04em \def\justverticalline{|}\def
\makevarrowpart#1{\hbox\tozpt{\hss$\kern\VerticalLineWidth{#1}$\hss}}
\def\VerticalMap#1#2#3#4#5{\setbox1=\makevarrowpart{#1}\def\arrowfillera{#2}%
\setbox3=\makevarrowpart{#3}\def\arrowfillerb{#4}\setbox5=\makevarrowpart{#5}%
\skip2=\VerticalMapHeight plus 1 fill \advance\skip2-\ht3 \advance\skip2%
\VerticalMapExtraHeight\advance\skip2-\ht1 \advance\skip2-\dp1 \skip4=%
\VerticalMapDepth plus 1 fill \advance\skip4-\dp3 \advance\skip4%
\VerticalMapExtraDepth\advance\skip4-\ht5 \advance\skip4-\dp5 \ifx
\arrowfillera\justverticalline\then\def\arra{\vrule width\VerticalLineWidth}%
\def\kea{\kern-0.05ex}\else\def\kea{\kern-0.35ex}\setbox2=\vbox{\kea
\makevarrowpart\arrowfillera\kea}\def\arra{\copy2}\fi\ifx\arrowfillerb
\justverticalline\then\def\arrb{\vrule width\VerticalLineWidth}\def\keb{\kern
-0.05ex}\else\def\keb{\kern-0.35ex}\setbox4=\vbox{\keb\makevarrowpart
\arrowfillerb\keb}\def\arrb{\copy4}\fi\let\thecmd\execVerticalMap\gettwoargs}
\def\execVerticalMap{\llap{$\labelstyle\upperlabel\>$}\vbox{\offinterlineskip
\kern-\VerticalMapExtraHeight\kern0.9ex \box1 \kea\xleaders\arra\vskip\skip2%
\kea\vtop{\box3 \keb\xleaders\arrb\vskip\skip4\keb\box5 \kern0.9ex \kern-%
\VerticalMapExtraDepth}}\rlap{$\labelstyle\>\lowerlabel$}}
\newif\ifPositiveGradient\PositiveGradienttrue\newif\ifClimbing\Climbingtrue
\newcount\DiagonalChoice\DiagonalChoice1 \newcount\lineno\newcount\rowno
\newcount\charno\newcount\DiagonalLineSegments\DiagonalLineSegments2
\def\laf{\afterassignment\xlaf\charno='} \def\xlaf{\hbox{\tenln\char\charno}}
\def\lah{\afterassignment\xlah\charno='} \def\xlah{\hbox{\rlap{\unhcopy2}%
\tenln\char\charno}} \def\makedarrowpart#1{\hbox{\mathsurround\zpt${#1}$}}
\def\DiagonalMap#1#2#3#4#5{\setbox2=\makedarrowpart{#2}\setbox1=%
\makedarrowpart{#1}\setbox5=\makedarrowpart{#5}\ifPositiveGradient\then\let
\mv\raise\else\let\mv\lower\fi\setbox0=\hbox{$\vcenter{\kern.9ex \hbox{\kern.%
4em \lineno=0 \mv-\ht1\box1 \loop\ifnum\lineno<\DiagonalLineSegments\mv
\lineno\ht2\copy2 \advance\lineno1 \repeat\mv\lineno\ht2\box5 \kern.4em }%
\kern.9ex }$} \dimen0=.5\wd0 \let\thecmd\execDiagonalLine\gettwoargs}
\def\execDiagonalLine{\kern\dimen0 \mv.5\wd2\hbox\tozpt{\hss$\labelstyle
\upperlabel$\kern.5\ht2}\kern-\dimen0 \box0 \kern-\dimen0 \mv-.5\wd2\hbox
\tozpt{\kern.5\ht2$\labelstyle\lowerlabel$\hss}\kern\dimen0 }
\def\rhvee{\mkern-10mu\gt} \def\lhvee{\lt\mkern-10mu} \def\dhvee{\vbox\tozpt{%
\vss\hbox{$\vee$}}} \def\uhvee{\vbox\tozpt{\hbox{$\wedge$}\vss}} \def\rhcvee{%
\mkern-10mu\succ} \def\lhcvee{\prec\mkern-10mu} \def\dhcvee{\vbox\tozpt{\vss
\hbox{$\curlyvee$}}} \def\uhcvee{\vbox\tozpt{\hbox{$\curlywedge$}\vss}} \def
\rhvvee{\mkern-10mu\gg} \def\lhvvee{\ll\mkern-10mu} \def\dhvvee{\vbox\tozpt{%
\vss\hbox{$\vee$}\kern-.6ex\hbox{$\vee$}}} \def\uhvvee{\vbox\tozpt{\hbox{$%
\wedge$}\kern-.6ex\hbox{$\wedge$}\vss}} \def\twoheaddownarrow{\rlap{$%
\downarrow$}\raise-.5ex\hbox{$\downarrow$}} \def\twoheaduparrow{\rlap{$%
\uparrow$}\raise.5ex\hbox{$\uparrow$}} \def\triangleup{{\scriptscriptstyle
\bigtriangleup}} \def\littletriangledown{{\scriptscriptstyle\triangledown}}
\def\htdot{\mkern3.15mu\cdot\mkern3.15mu} \def\vtdot{\vbox to 1.46ex{\vss
\hbox{$\cdot$}}} \def\utbar{\vrule height 0.093ex depth\zpt width 0.4em} \let
\dtbar\utbar\def\rtbar{\mkern1.5mu\vrule height 1.1ex depth.06ex width .04em%
\mkern1.5mu} \let\ltbar\rtbar\def\rthooka{\raise.603ex\hbox{$%
\scriptscriptstyle\subset$}} \def\lthooka{\raise.603ex\hbox{$%
\scriptscriptstyle\supset$}} \def\rthookb{\raise-.022ex\hbox{$%
\scriptscriptstyle\subset$}} \def\lthookb{\raise-.022ex\hbox{$%
\scriptscriptstyle\supset$}} \def\dthookb{\hbox{$\scriptscriptstyle\cap$}%
\mkern5.5mu} \def\uthookb{\hbox{$\scriptscriptstyle\cup$}\mkern4.5mu} \def
\dthooka{\mkern6mu\hbox{$\scriptscriptstyle\cap$}} \def\uthooka{\mkern6mu%
\hbox{$\scriptscriptstyle\cup$}} \def\hfdot{\mkern3.15mu\cdot\mkern3.15mu}
\def\vfdot{\vbox to 1.46ex{\vss\hbox{$\cdot$}}} \def\vfdashstrut{\vrule width%
\zpt height1.3ex depth0.7ex} \def\vfthedash{\vrule width\VerticalLineWidth
height0.6ex depth \zpt} \def\hfthedash{\vrule\horizhtdp width 0.26em} \def
\hfdash{\mkern5.5mu\hfthedash\mkern5.5mu} \def\vfdash{\vfdashstrut\vfthedash}
\def\dmcornervert{\vrule width\VerticalLineWidth height\HorizontalLineHeight}
\def\rdmcorner{\kern.4em\dmcornervert\vrule width .4em \horizhtdp} \def
\ldmcorner{\vrule width .4em \horizhtdp\dmcornervert\kern.4em} \def\rumcorner
{\kern.4em\vrule width .4em \horizhtdp} \def\lumcorner{\vrule width .4em
\horizhtdp\kern.4em} \def\urmcorner{\mkern-4.2mu} \let\drmcorner\urmcorner
\let\dlmcorner\urmcorner\let\ulmcorner\urmcorner
\def\NorthWest{\PositiveGradientfalse\Climbingtrue\DiagonalChoice0 } \def
\NorthEast{\PositiveGradienttrue\Climbingtrue\DiagonalChoice1 } \def
\SouthWest{\PositiveGradienttrue\Climbingfalse\DiagonalChoice3 } \def
\SouthEast{\PositiveGradientfalse\Climbingfalse\DiagonalChoice2 } \def\nwhTO{%
\nwarrow\mkern-1mu} \def\nehTO{\mkern-.1mu\nearrow} \def\sehTO{\searrow\mkern
-.02mu} \def\swhTO{\mkern-.8mu\swarrow} \def\NW{\NorthWest\DiagonalMap{\lah
111}{\laf100}{\laf100}{\laf100}{\laf100}} \def\NE{\NorthEast\DiagonalMap{\laf
0}{\laf0}{\laf0}{\laf0}{\lah22}} \def\SW{\SouthWest\DiagonalMap{\lah11}{\laf0%
}{\laf0}{\laf0}{\laf0}} \def\SE{\SouthEast\DiagonalMap{\laf100}{\laf100}{\laf
100}{\laf100}{\lah122}}
\def\rTo{\HorizontalMap\empty-\empty-\rhvee} \def\lTo{\HorizontalMap\lhvee-%
\empty-\empty} \def\dTo{\VerticalMap\empty|\empty|\dhvee} \def\uTo{%
\VerticalMap\uhvee|\empty|\empty} \let\uFrom\uTo\let\lFrom\lTo
\def\rDotsto{\HorizontalMap\empty\hfdot\hfdot\hfdot\rhvee} \def\lDotsto{%
\HorizontalMap\lhvee\hfdot\hfdot\hfdot\empty} \def\dDotsto{\VerticalMap\empty
\vfdot\vfdot\vfdot\dhvee} \def\uDotsto{\VerticalMap\uhvee\vfdot\vfdot\vfdot
\empty} \let\uDotsfrom\uDotsto\let\lDotsfrom\lDotsto
\def\rDashto{\HorizontalMap\empty\hfdash\hfdash\hfdash\rhvee} \def\lDashto{%
\HorizontalMap\lhvee\hfdash\hfdash\hfdash\empty} \def\dDashto{\VerticalMap
\empty\vfdash\vfdash\vfdash\dhvee} \def\uDashto{\VerticalMap\uhvee\vfdash
\vfdash\vfdash\empty} \let\uDashfrom\uDashto\let\lDashfrom\lDashto
\def\rImplies{\HorizontalMap==\empty=\Rightarrow} \def\lImplies{%
\HorizontalMap\Leftarrow=\empty==} \def\dImplies{\VerticalMap\|\|\empty\|%
\Downarrow} \def\uImplies{\VerticalMap\Uparrow\|\empty\|\|} \let\uImpliedby
\uImplies\let\lImpliedby\lImplies
\def\rMapsto{\HorizontalMap\rtbar-\empty-\rhvee} \def\lMapsto{\HorizontalMap
\lhvee-\empty-\ltbar} \def\dMapsto{\VerticalMap\dtbar|\empty|\dhvee} \def
\uMapsto{\VerticalMap\uhvee|\empty|\utbar} \let\uMapsfrom\uMapsto\let
\lMapsfrom\lMapsto
\def\rIntoA{\HorizontalMap\rthooka-\empty-\rhvee} \def\rIntoB{\HorizontalMap
\rthookb-\empty-\rhvee} \def\lIntoA{\HorizontalMap\lhvee-\empty-\lthooka} \def
\lIntoB{\HorizontalMap\lhvee-\empty-\lthookb} \def\dIntoA{\VerticalMap
\dthooka|\empty|\dhvee} \def\dIntoB{\VerticalMap\dthookb|\empty|\dhvee} \def
\uIntoA{\VerticalMap\uhvee|\empty|\uthooka} \def\uIntoB{\VerticalMap\uhvee|%
\empty|\uthookb} \let\uInfromA\uIntoA\let\uInfromB\uIntoB\let\lInfromA\lIntoA
\let\lInfromB\lIntoB\let\rInto\rIntoA\let\lInto\lIntoA\let\dInto\dIntoB\let
\uInto\uIntoA
\def\rEmbed{\HorizontalMap\gt-\empty-\rhvee} \def\lEmbed{\HorizontalMap\lhvee
-\empty-\lt} \def\dEmbed{\VerticalMap\vee|\empty|\dhvee} \def\uEmbed{%
\VerticalMap\uhvee|\empty|\wedge}
\def\rProject{\HorizontalMap\empty-\empty-\triangleright} \def\lProject{%
\HorizontalMap\triangleleft-\empty-\empty} \def\uProject{\VerticalMap
\triangleup|\empty|\empty} \def\dProject{\VerticalMap\empty|\empty|%
\littletriangledown}
\def\rOnto{\HorizontalMap\empty-\empty-\twoheadrightarrow} \def\lOnto{%
\HorizontalMap\twoheadleftarrow-\empty-\empty} \def\dOnto{\VerticalMap\empty|%
\empty|\twoheaddownarrow} \def\uOnto{\VerticalMap\twoheaduparrow|\empty|%
\empty} \let\lOnfrom\lOnto\let\uOnfrom\uOnto
\def\hEq{\HorizontalMap==\empty==} \def\vEq{\VerticalMap\|\|\empty\|\|} \let
\rEq\hEq\let\lEq\hEq\let\uEq\vEq\let\dEq\vEq
\def\hLine{\HorizontalMap\empty-\empty-\empty} \def\vLine{\VerticalMap\empty|%
\empty|\empty} \let\rLine\hLine\let\lLine\hLine\let\uLine\vLine\let\dLine
\vLine
\def\rPto{\HorizontalMap\empty-\empty-\rightharpoonup} \def\lPto{%
\HorizontalMap\leftharpoonup-\empty-\empty} \def\uPto{\VerticalMap
\upharpoonright|\empty|\empty} \def\dPto{\VerticalMap\empty|\empty|%
\downharpoonright} \let\lPfrom\lPto\let\uPfrom\uPto
\def\drBent{\VerticalMap\empty\empty\rdmcorner|\empty} \def\dlBent{%
\VerticalMap\empty\empty\ldmcorner|\empty} \def\urBent{\VerticalMap\empty|%
\rumcorner\empty\empty} \def\ulBent{\VerticalMap\empty|\lumcorner\empty\empty
} \def\rdBent{\HorizontalMap\empty\empty\drmcorner-\empty} \def\ldBent{%
\HorizontalMap\empty-\dlmcorner\empty\empty} \def\ruBent{\HorizontalMap\empty
\empty\urmcorner-\empty} \def\luBent{\HorizontalMap\empty-\ulmcorner\empty
\empty}
\def\drBentto{\VerticalMap\empty\empty\rdmcorner|\dhvee} \def\dlBentto{%
\VerticalMap\empty\empty\ldmcorner|\dhvee} \def\urBentto{\VerticalMap\uhvee|%
\rumcorner\empty\empty} \def\ulBentto{\VerticalMap\uhvee|\lumcorner\empty
\empty} \def\rdBentto{\HorizontalMap\drmcorner-\empty-\rhvee} \def\ldBentto{%
\HorizontalMap\lhvee-\empty-\dlmcorner\empty\empty} \def\ruBentto{%
\HorizontalMap\urmcorner-\empty-\rhvee} \def\luBentto{\HorizontalMap\lhvee-%
\empty-\ulmcorner}
\def\pile#1{{\incommdiagtrue\null\baselineskip\zpt\lineskip\zpt\lineskiplimit
\zpt\mathsurround\zpt\tabskip\zpt\let\\\cr\vcenter{\halign{ \hfil$##$\hfil\cr
#1 \crcr}}}}
\def\SEpbk{\rlap{\smash{\kern0.1em \vrule depth 2.67ex height -2.55ex width 0%
.9em \vrule height -0.46ex depth 2.67ex width .05em }}} \def\SWpbk{\llap{%
\smash{\vrule height -0.46ex depth 2.67ex width .05em \vrule depth 2.67ex
height -2.55ex width .9em \kern0.1em }}} \def\NEpbk{\rlap{\smash{\kern0.1em
\vrule depth -3.48ex height 3.67ex width 0.95em \vrule height 3.67ex depth -1%
.39ex width .05em }}} \def\NWpbk{\llap{\smash{\vrule height 3.6ex depth -1.39%
ex width .05em \vrule depth -3.48ex height 3.67ex width .95em \kern0.1em }}}
\def\hboxsm#1{\setbox0=\hbox{#1}\ht0\zpt\dp0\zpt\box0}
\textwidth=6.5in
\oddsidemargin=0in
\evensidemargin=0in
\setlength{\baselineskip}{16pt}
\parskip=14pt
\parindent=0pt
\hyphenation{hom-ob-ject hom-ob-jects}
% Springer-Verlag:
%\magnification=\magstep1
%\vsize=23.5true cm
%\hsize=16true cm
%\nopagenumbers
%\topskip=1truecm
%\headline={\tenrm\hfil\folio\hfil}
%\raggedbottom
%\abovedisplayskip=3mm
%\belowdisplayskip=3mm
%\abovedisplayshortskip=3mm
%\belowdisplayshortskip=3mm
%\normalbaselineskip=12pt
%\normalbaselines
\begin{document}
\title{Temporal Structures}
\author{Ross Casley$\dagger$ \and Roger F. Crew$\dagger$ \and
Jos\'e Meseguer$\ddagger$ \and Vaughan Pratt$\dagger$}
%\date{}
\maketitle
{\parindent=0pt
$\dagger$ Dept. of Computer Science, Stanford University, Stanford, CA 94305 \\
$\dagger$ Supported by the National Science Foundation under grant
CCR-8814921 \\
$\ddagger$ SRI International, Menlo Park, CA 94025 and \\
Center for the Study of Language and Information, Stanford University, Stanford, CA 94305 \\
$\ddagger$ Supported by the Office of Naval Research under contracts
N00014-86-C-0450 and N00014-88-C-0618, and by the National Science
Foundation under grant CCR-8707155.
This paper is a revision of a CTCS-89 paper \cite{CCMP}.
\begin{abstract}
We combine the principles of the Floyd-Warshall-Kleene algorithm,
enriched categories, and Birkhoff arithmetic, to yield a useful class
of algebras of transitive vertex-labeled spaces. The motivating
application is a uniform theory of abstract or parametrized time in
which to any given notion of time there corresponds an algebra of
concurrent behaviors and their operations, always the same operations
but interpreted automatically and appropriately for that notion of
time. An interesting side application is a language for succinctly
naming a wide range of datatypes.
\end{abstract}
\section{Introduction}
Posets, metric spaces, ``closed'' automata, and categories have in
common the notion of a {\it space} of points with distances between
points. These distances are respectively truth values, reals,
languages, and sets.
Distances have two facets, logical and metrical. The logical facet is
expressed respectively via implications $p\to q$ between truth values,
comparisons $x\ge y$ between reals, inclusions $L\subseteq M$ between
languages, and functions $f:X\to Y$ between sets. The metrical facet
is expressed via a suitable monotone associative operation,
respectively conjunction $p\land q$, addition $x+y$, concatenation
$LM$, and cartesian product $X\times Y$. These two facets confer on
any such set of distances the attributes of an ordered monoid
$(D,\le,\otimes,I)$, having simultaneously the attributes of a poset
$(D,\le)$ and a monoid $(D,\otimes,I)$, with $\otimes$ monotone in each
argument with respect to $\le$. For such cases as our last example,
sets as distances, the poset structure is generalized to category
structure, so that rather than an ordered monoid we have a monoidal
category, for which ``monotone operation'' must be correspondingly
generalized to ``functor.''
The transitivity law $u\le v\land v\le w\to u\le w$ for a poset, the
triangle inequality $d(u,v)+d(v,w)\ge d(u,w)$ for a metric space, the
requirement $L_{uv}L_{vw}\subseteq L_{uw}$ for an automaton to be
considered closed, and the family of composition operations
$m_{uvw}:\Hom(v,w)\times\Hom(u,v)\to\Hom(u,w)$ for a category,
respectively combine these two facets via essentially the same basic
triangle inequality.
Each of these classes of generalized metric spaces has a natural notion
of map, respectively monotone functions, contractions, morphisms of
automata, and functors, in each case making that class a category with
those maps as its morphisms.
In computer science some of the common elements of these notions have
been unified by organizing distances as an {\it idempotent semiring},
an ordered monoid whose underlying partial order contains all sups and
whose monoidal operation preserves (i.e. distributes over) those sups.
The basis for this unification is the O$(n^3)$ time procedure of Roy
\cite{Roy59} and independently that of S. Warshall \cite{War62} for
computing the transitive closure of a binary relation on $n$ elements
presented as an $n\times n$ Boolean (0- and 1-valued) matrix. The
unification was hinted at by R.W. Floyd \cite{Flo62} who observed that
Warshall's procedure would compute shortest paths instead of transitive
closure if Booleans were replaced by nonnegative reals, disjunction by
{\bf min}, and conjunction by addition. The uniform expression of this
common algorithm in terms of semirings was first described by Robert
and Ferland \cite{RF}. Synonyms for this notion of semiring include
regular algebra \cite{Con}, Kleene algebra \cite{Koz80b,Koz81a}, and
quantale \cite{Vic89}.
Other instantiations of this abstract algorithm were subsequently
found. Replacing Booleans in Warshall's algorithm by languages,
conjunction by concatenation, and disjunction by union, yields Kleene's
algorithm for ``closing'' an automaton $M$ having $n$ states, viewed as
an $n\times n$ matrix of (finitely presented) regular languages, from
which one may then easily read off a regular expression denoting the
language $L(M)$ accepted by $M$ \cite{AHU}. Even Gaussian elimination
was found to be so describable in the (nonidempotent) ring of reals
made a field via $1/(1-x)=1+x+x^2+\ldots$.
Independently and working in a categorical setting, Eilenberg and Kelly
\cite{EK66a} developed a more categorically sophisticated version of
the same generalization of metric space under the name enriched
category or $V$-category. In place of a semiring they used a monoidal
category $V$. Distances became homobjects, a generalization of
homset. The logical facet was expressed by the category structure of
$V$: the morphisms of $V$ permitted ``comparisons'' of homobjects. The
metrical facet was expressed by the monoidal structure of $V$:
``consecutive'' homobjects were combined by the binary operation of the
monoid.
Although Eilenberg and Kelly described enriched categories in their
full generality, their motivating applications were confined to $V$'s
forming classes rather than sets, an emphasis continued in Kelly's
subsequent book on enriched categories \cite[p22]{Kel}. Yet in 1974
F.W. Lawvere \cite{Law} in an excellent advertisement for the utility
of enriched categories emphasized $V$'s that were semirings, hence sets
rather than classes, and with category structure merely that of a
poset. This brought enriched categories into close proximity to the
parallel computer science development. Nevertheless this connection
between enriched categories and shortest-path algorithms remained
undetected for another 15 years \cite{Pr89a}.
The present paper starts from the notion of a partial order as a
behavior of a ``truly concurrent'' process, and uniformly extends it to
other classes of spaces via the above correspondences. This extension
was first proposed by Pratt \cite{Pr84} with just the semiring view in
mind; here we extend that proposal to take advantage of the enriched
category perspective as well as additional basic operations whose
utility were not at all apparent at the time, and develop the resulting
framework in detail.
This approach achieves a considerable unification of ideas relevant to
concurrency, as well as making connections with other areas to which
the semiring and enrichment insights apply. In the concurrency
application we characterize time abstractly as an ordered monoid, and
more generally albeit speculatively as a monoidal category, whose
objects are temporal quantities. From this model of time we construct
via enrichment a category of behaviors. A behavior, or computation, is
a space whose points represent events and whose distances are to be
interpreted as delays between events.
Various natural operations on such spaces correspond to useful
constructs for concurrent programming languages. These operations are
functors, most of which prove to be definable via familiar categorical
constructions. We treat only concurrency and not nondeterminism
(choice), in that we work only with single behaviors rather than sets
of them representing alternative behaviors.
An appealing feature of this approach is its abstractness. A single
framework is developed independently of choice of ordered monoid or
monoidal category. Instantiating the whole framework for a particular
monoidal structure yields the corresponding model of concurrency
incorporating that structure as its notion of time, with all the
operations of the framework likewise instantiated. The development
lends itself to the application of categorical methods.
A practical application of this perspective is to improving the
organization of current theories of real time in concurrency modeling.
A case in point is the recent work of H. Lewis \cite{Lew90}. Lewis
works with state diagrams each of whose transitions is labeled with a
set of $O(n^2)$ intervals, with larger sets at later transitions, per
his Figure 6. In our framework the essence of this information would
be captured with one real labeling each edge of the {\it transitive
closure} of the diagram, with the delay from $u$ to $v$ being a lower
bound whose matching upper bound (to form an interval) is the negation
of the delay from $v$ to $u$.
The ordered monoids that have previously been found useful in this
setting are all useful here for one view or another of time. In
addition we identify a class of finite generalizations of the ordered
monoid $\two$ of truth values which we call the {\it idempotent closed
ordinals} or ico's. There are $2^{n-2}$ such closed or residuated
ordered monoids with $n$ elements, exactly one of which is cartesian
closed, proved via a pretty representation theorem. We describe
natural applications for the two three-element ico's $\three$ and
$\three'$, and show where each has in effect been used in the
concurrency literature.
The operations on spaces ordinarily considered in the context of
shortest-path algorithms and their cousins can be collectively
understood as Kleene's {\it regular} operations $L+M$, $LM$, and $L^*$,
defined by Kleene only for languages but all equally meaningful for the
other domains, even the one for Gaussian elimination (with
$x^*={1/(1-x)}$). In terms of matrices these are the operations of
pointwise sum of two $m\times n$ matrices $M,N$ to yield an $m\times n$
matrix $M+N$, product of an $m\times k$ matrix $M$ by a $k\times n$
matrix $N$ to yield an $m\times n$ matrix $MN$, and reflexive and/or
transitive closure of an $n\times n$ matrix $M$ to yield an $n\times n$
matrix $M^*$. A reasonably close connection between such matrices and
spaces can be made by regarding rectangular $m\times n$ matrices as
complete bipartite graphs from $m$ vertices to $n$ vertices, and in the
other direction ordinary (nonbipartite) directed graphs as square
matrices, with distances entering as edge labels.
This paper adds to these regular operations a number of other
operations such as disjoint union or juxtaposition, tensor product,
concatenation, exponentiation, and useful variations on these obtained
by generalizing products to pullbacks and coproducts to pushouts.
These operations are generally better matched to the concurrency
modeling application than the regular operations, both extrinsically
and intrinsically. Extrinsically juxtaposition captures concurrence,
tensor product captures orthocurrence, etc. And intrinsically these
operations impose few if any constraints on relationships between
vertex sets of their arguments, unlike the regular operations.
An early and striking example of these ``nonregular'' operations is
provided by Birkhoff's arithmetic \cite{Birk37,Birk42} of posets up to
isomorphism under addition, multiplication, and exponentiation each of
two kinds, cardinal and ordinal. Birkhoff's application was to the
arithmetic of cardinals and ordinals, which he proposed to unify by
regarding both as posets, with cardinals as discrete posets and
ordinals as linear. In place of two sorts of data he then had two
sorts of operations.
In relating Birkhoff arithmetic to concurrent programming we make the
connections cardinal-concurrent and ordinal-sequential. Discrete
posets model the purely concurrent behaviors (no sequentiality) while
linearly ordered posets model the purely sequential. The cardinal
operations map discrete sets to discrete, i.e. they preserve
concurrency, while the ordinal operations map linear sets to linear,
i.e. they preserve sequentiality.
Our framework can then be viewed as a generalization of Birkhoff
arithmetic, in several directions: several additional operations, many
other metrics besides $\two$, provision of labels on points, and
setting Birkhoff arithmetic in a suitable categorical framework. We
have not however succeeded in finding the right categorical expression
of either ordinal multiplication (i.e. lexicographic product) or
ordinal exponentiation, which we therefore raise as an interesting
problem.
There is a recursive aspect to the enrichment process that permits a
further generalization of this framework. We introduce an operation we
call $\D!$, the enriched category term for which is
$V$-Cat,\footnote{We prefer $\D$ to $V$ as connoting distance or
delay.} which takes a symmetric monoidal category $\D$ and returns the
symmetric monoidal category $\D!$ of all small $\D$-categories. For
example if $\D$ is the monoidal category $\{0,1\}$ of truth values then
$\D!$ is the monoidal category of preordered sets. This construction
can therefore be iterated to yield $\D!!$, $\D!!!$, etc.
Behaviors as sets of events require not only delay information between
events but information describing each event. That is, we wish to
label vertices independently of the labeling of edges. From a set
theoretic perspective there is nothing to this. However from a
category theoretic perspective, with some operations defined as limits
or colimits the presence of labels is a nontrivial complication;
consider for example coproducts in the category of vertex-labeled
posets. We define the category of $\E$-labeled $\D$-spaces, each of
whose objects is an object $d$ of $\D$ (we call such a $d$ a
$\D$-space) paired with an object $e$ of $\E$, along with a function
$f:U_d\to V_e$ from the underlying set of $d$ (the points of the
space $d$) to the underlying set of $e$ (typically the set $e$ itself,
construed as an alphabet of labels) serving as a vertex labeling
function. The appropriate category of such $\E$-labeled $\D$-spaces is
the comma category $(U,V)$.
To make the comma-category construct iterable analogously to the
iterability of enrichment we need to extend its arguments so as to
carry both the structure we need for enrichment (i.e. a symmetric
monoidal category) and that for the comma construction (hence we need a
forgetful functor). We denote this extension of the comma construction
to these extended arguments by $\D\comma\E$.
With these two operations, along with certain constants, we now have a
language with such expressions as $\one!$, $\three!!\comma\one!$,
$\R!$, etc. The succinctness of each expression belies its content.
For example the expression $\one!!!$ does not merely hint at the
category of all 2-categories but specifies it in full detail, complete
with all internal features such as the interchange law, 2-functors
between 2-categories, etc. Moreover it supplies some external
features: it is a closed category, and is equipped with a forgetful
functor to $\Set$ taking each 2-category to the set of its objects.
However it is not a 3-category as it should be, or even a 2-category,
and has no other useful forgetful functors such as to $\Cat$. These
restrictions reflect our particular recursive construction of
categories, which yields only semiconcrete symmetric monoidal
categories.
\section{Operations}
The motivating application of our framework is to define an algebra of
concurrent behaviors (runs, computations), independently of any
particular choice of notion of time. In this section we describe the
desired operations of such an algebra, and illustrate them for {\it
dual} metric spaces, spaces in which distance $d$ from $u$ to $v$
indicates that $v$ must follow $u$ by {\it at least} $d$ units (metric
spaces would replace ``at least'' by ``at most'').
In formal language theory, concatenation is defined on individual
strings as well as on languages (sets of strings) whereas union and
Kleene star are defined only on languages. In the framework of the
present paper strings are generalized to {\it behaviors}, defined as
labeled spaces, with languages correspondingly generalized to {\it
processes} as sets of behaviors. We shall define only operations on
individual behaviors, hence including concatenation but excluding union
and Kleene star. The operations we treat include all behavior
operations of the process language of \cite{Pr86}, namely concurrence,
orthocurrence, concatenation, and local concatenation, as well as new
operations synchronized concurrence, exponentiation, product, and local
product. The process operations of that paper are linearization,
union, intersection, complement, star, augment closure, and prefix
closure, whose definition we defer for now pending the appropriate
integration of our framework with the current understanding of
nondeterminism.
We now illustrate and define three forms of sum: concurrence $p|q$,
concatenation $p;^dq$, and local concatenation $p\lc^dq$. In these
examples all edges are labeled with reals or $\infty$, with absence of
an edge interpreted as distance $-\infty$. These examples may be taken
as pomset examples by ignoring the edge labels (equivalent to taking
$-\infty$ as 0 and everything else as 1), and as automata examples by
treating distance $d$ as the set of all strings of length at most $d$
(making $-\infty$ the empty language).
In all of these forms of sum, the set of points of the sum is the
disjoint union of those of $p$ and $q$. That is, the basic step in
forming the sum is to juxtapose $p$ and $q$.
{\it Concurrence} $p|q$ is the least constrained form of sum. Labels
on points, and distances within $p$ and $q$, remain unchanged, while
the distance from an event of $p$ to one of $q$ is $-\infty$, and
likewise from $q$ to $p$. {\it Disjoint} concurrence differs from
concurrence in that the labels from $p$ and $q$ are ``marked'' to
distinguish them: the label $a$ becomes $a_0$ or $a_1$ according to
whether the point it labels is from $p$ or $q$.
\setlength{\unitlength}{0.0088in}
\begin{center}
\begin{picture}(671,130)(40,660)
\put( 25,670){Concurrence $(a;^3b)|(c|d)$}
\put( 45,715){$b$} \put( 45,755){$3$} \put( 52,790){$a$}
\put( 55,785){\vector( 0,-1){ 55}}
\put( 82,752){$|$} \put(103,790){$c$} \put(104,715){$d$}
\put(105,730){$\bullet$}
\put(105,780){$\bullet$}
\put(134,753){$=$} \put(160,755){$3$} \put(166,715){$b$} \put(167,790){$a$}
\put(170,780){\vector( 0,-1){ 50}}
\put(192,790){$c$} \put(193,780){$\bullet$} \put(194,715){$d$}
\put(195,730){$\bullet$}
\put(230,670){Concatenation $(a;^3b);^2(c|d)$}
\put(270,750){$3$} \put(282,790){$a$} \put(284,715){$b$}
\put(285,787){\vector( 0,-1){ 55}}
\put(312,754){$;^2$} \put(333,790){$c$} \put(334,715){$d$}
\put(335,730){$\bullet$} \put(335,780){$\bullet$}
\put(360,755){$=$} \put(390,750){$3$} \put(396,715){$b$} \put(397,790){$a$}
\put(400,730){\vector( 1, 0){ 50}} \put(400,730){\vector( 1, 1){ 50}}
\put(400,782){\vector( 0,-1){ 50}} \put(400,785){\vector( 1, 0){ 50}}
\put(400,785){\vector( 1,-1){ 50}}
\put(415,713){$2$} \put(416,736){$2$} \put(415,790){$5$}
\put(438,748){$5$} \put(448,715){$d$} \put(448,790){$c$}
\put(480,670){Local Concatenation $(a;^3B)\underline ;^2(c|D)$}
\put(513,750){$3$} \put(520,715){$B$} \put(522,790){$a$}
\put(525,787){\vector( 0,-1){ 55}}
\put(552,754){$\underline ;^2$} \put(573,790){$c$} \put(575,715){$D$}
\put(575,730){$\bullet$} \put(575,780){$\bullet$}
\put(600,755){$=$} \put(630,750){$3$} \put(635,715){$B$} \put(637,790){$a$}
\put(640,730){\vector( 1, 0){ 45}} \put(640,782){\vector( 0,-1){ 50}}
\put(640,785){\vector( 1, 0){ 45}}
\put(655,715){$2$} \put(655,790){$2$} \put(682,790){$c$} \put(684,715){$D$}
\end{picture}
\centerline{Figure 1. Additive Operations.}
\end{center}
{\it Concatenation} $p;^dq$ is like $p|q$, differing only with respect
to the distances from $p$ to $q$, which are the least possible
distances no less than $d$. Disjoint concatenation is to concatenation
as disjoint concurrence is to concurrence.
{\it Local concatenation} $p\lc^dq$ is intermediate in strength
between concurrence and concatenation: it only imposes the additional
distance constraints of concatenation between colocated elements of $p$
and $q$. For the above example we have identified location with case
of label: lower case at one location, upper at the other.
We now illustrate and define three forms of product, namely
orthocurrence $p\otimes q$, product $p\times q$, and local product
$p\underline\times q$.
\setlength{\unitlength}{0.0088in}
\begin{center}
\setlength{\unitlength}{0.0088in}
\begin{picture}(671,130)(40,520)
\put( 20,530){Orthocurrence $(a;^3b)\otimes(c;^2d)$}
\put( 40,615){$3$} \put( 45,575){$b$} \put( 45,650){$a$}
\put( 50,645){\vector( 0,-1){ 55}}
\put( 65,615){$\otimes$} \put( 85,575){$d$} \put(85,650){$c$} \put(90,615){$2$}
\put( 90,645){\vector( 0,-1){ 55}}
\put(115,615){$=$} \put(130,575){$bc$} \put(130,650){$ac$} \put(148,615){$3$}
\put(145,645){\vector( 0,-1){ 50}} \put(145,645){\vector( 1, 0){ 55}}
\put(150,590){\vector( 1, 0){ 50}} \put(150,645){\vector( 1,-1){ 45}}
\put(170,575){$2$} \put(170,650){$2$} \put(175,620){$5$} \put(205,575){$bd$}
\put(205,645){\vector( 0,-1){ 50}} \put(205,650){$ad$} \put(210,615){$3$}
\put(270,530){Product $(a;^3b)\times(c;^2d)$}
\put(275,615){$3$} \put(280,575){$b$} \put(280,650){$a$}
\put(285,645){\vector( 0,-1){ 55}}
\put(300,615){$\times$} \put(320,575){$d$} \put(320,650){$c$} \put(325,615){$2$}
\put(325,645){\vector( 0,-1){ 55}}
\put(350,615){$=$} \put(365,575){$bc$} \put(365,650){$ac$}
\put(380,645){\vector( 0,-1){ 50}} \put(380,645){\vector( 1, 0){ 55}}
\put(385,590){\vector( 1, 0){ 50}} \put(385,645){\vector( 1,-1){ 45}}
\put(385,615){$3$} \put(405,575){$2$} \put(405,650){$2$} \put(410,620){$2$}
\put(440,575){$bd$} \put(440,650){$ad$} \put(445,615){$3$}
\put(440,645){\vector( 0,-1){ 50}}
\put(500,530){Local Product $(a;^3b)\underline\times c(;^2D,;^1c)$}
\put(505,615){$3$} \put(510,575){$B$} \put(510,650){$a$}
\put(515,645){\vector( 0,-1){ 55}}
\put(530,615){$\underline\times$}
\put(550,575){$D$} \put(555,615){$2$} \put(570,650){$c$}
\put(575,645){\vector( 1,-3){ 18.500}} \put(575,645){\vector(-1,-3){ 18.500}}
\put(590,575){$e$} \put(590,615){$1$} \put(615,615){$=$} \put(635,640){$ac$}
\put(652,640){\vector( 1, 0){ 45}}
\put(665,588){$BD$} \put(670,645){$1$} \put(675,600){$\bullet$}
\put(700,640){$ae$}
\end{picture}
\centerline{Figure 2. Multiplicative Operations.}
\end{center}
The underlying set of each of these products is the cartesian product
of the underlying sets of their arguments (or a subset thereof in the
case of local product), while their labels are corresponding tuples:
thus if $\mu$ assigns labels to points then the label $\mu(\<u,v>)$ in
a product is $\<\mu_p(u),\mu_q(v)>$.
{\it Orthocurrence} $p|q$ is distinguished from other products by the
distance from $\<u,v>$ to $\<u',v'>$ being $d(u,u')+d(v,v')$. {\it
Product} $p\times q$ takes this distance to be min$(d(u,u'),d(v,v'))$.
{\it Local product} $p\underline\times q$ is obtained from product by
deleting all points with mixed locations (again indicated by case in
the example), and reducing the distance between tuples at distinct
locations to $-\infty$.
For pomsets orthocurrence and product coincide, both combining the
distances $d(u,u')$ and $d(v,v')$ via conjunction. For automata they
differ: orthocurrence uses concatenation, product intersection.
{\em Basic Constants}. The empty schedule, denoted $0$, has no
events. It is the identity for all sums: concurrence, concatenation,
and local concatenation. The unit schedule, denoted $I$, has one event
with self-distance 0, and has the singleton alphabet $\{\bullet\}$,
whence that one event is labeled $\bullet$. Up to isomorphism $I$ is
the identity for orthocurrence. The top schedule, denoted 1, differs
from $I$ in having self-distance $\infty$. Up to isomorphism it is the
identity for product. (The isomorphism is not only between events but
between labels, via the evident isomorphism between $\Sigma$ and
$\Sigma\times\{\bullet\}$.)
We have illustrated these operations and constants for (dual) metric
spaces, and indicated how to derive the corresponding pomset and
automata examples. However these operations and constants also admit
of obvious interpretations for the metrics themselves. Concurrence is
respectively max, disjunction, and union for each of the ordered
monoids consisting of truth values, reals, and languages, and is the
same operation as concatenation and local concatenation. Orthocurrence
is respectively arithmetic sum, conjunction, and concatenation.
Product is respectively min, conjunction, and intersection, and is the
same operation as local product.
%{\em Exponentiation}. Denoted $B^A$. The events of this schedule are the
%delay-preserving functions from $A$ to $B$. For the pomset model we
%consider $f$ to precede $g$ if $fa$ precedes $ga$ for all events $a$ in
%$A$. For the minimum delay model the delay from $f$ to $g$ is the infimum
%of the delays from $fa$ to $ga$ taken over the events of $A$. $B^A$ can
%be interpreted as being derived from $B$ by redefining an event to be a
%{\em pattern\/} of events defined by $A$. For example if $A$ is simply an
%ordered pair of events, then the events of $B^A$ are ordered pairs of
%events in $B$.
\section{Monoidal Categories and their Functors}
Monoidal categories and enrichment are less well established in the
computing literature than such other aspects of category theory as
adjunctions. We therefore recall here enough details of these notions
to make this paper self-contained at least on a first reading by those
familiar with at least adjunctions. In addition our treatment will
serve to define the perspective on these topics that we will assume of
the reader, and to coordinate this perspective with the rest of the
paper. Considerably more information on these topics can be found in
the books of Mac~Lane \cite{Mac} and Kelly \cite{Kel}.
\subsection{Monoidal Categories}
Informally, a monoidal category amounts to a structure that is both a
monoid and a category. Formally a {\it strict monoidal category}
$\D=(D,\otimes,I)$ is a category $D$ together with a functor
\hbox{$\otimes:D^2\to D$} called the {\it tensor product}
\footnote{Mac~Lane writes $\otimes$ as $\Box$.} and an object $I$ of
$D$ called the {\it unit}, such that the object part and the morphism
part of $D$ each form a monoid under $\otimes$ with respective
identities $I$ and $1_{I}$. We refer to $(\otimes,I)$ as a {\it
monoidal structure} for the category $\D$.
The structure $(\Set,\times,\{\bullet\})$ with $\times$ cartesian product is
not strict monoidal because in general $X\times(Y\times Z)$ is not
equal to $(X\times Y)\times Z$, they are merely isomorphic. Moreover
there is a particular isomorphism we would like to be able to {\it
assume} is the one meant when we say that they are isomorphic, namely
$\alpha_{XYZ}:(X\times Y)\times Z\to X\times(Y\times Z)$ defined as
$\alpha(\<\<x,y>,z>)=\<x,\<y,z>>$. Similarly particular isomorphisms
take the place of the two identity laws for the unit $I=\{\bullet\}$.
We therefore define a more general notion. A {\it monoidal category}
$\D=(D,\otimes,I,\alpha,\lambda,\rho)$ is as for strict monoidal
categories but specifying natural isomorphisms $\alpha:(c\otimes
d)\otimes e\cong c\otimes(d\otimes e)$, $\lambda:I\otimes d\cong d$ and
$\rho:d\otimes I\cong d$ in place of the usual three-axiom basis for
the theory of monoids. A {\it symmetric} monoidal category specifies
an additional natural isomorphism $\gamma:d\otimes e\cong e\otimes d$.
We shall confine ourselves to symmetric monoidal categories throughout,
and understand ``monoidal'' to mean symmetric monoidal at all times.
The intent of these isomorphisms is that they be canonical: if an
element of one set corresponds to an element of another set at all,
this is a universal or global correspondence. In particular there may
be at most one such isomorphism between two sets, and in the case of a
set in isomorphism with itself that isomorphism must be the identity.
This intuition is formalized via certain {\it coherence conditions},
whose effect is that if there are multiple ways to infer by
transitivity two isomorphisms between two sets, those isomorphisms must
be the same. A strict monoidal category amounts to a monoidal category
whose such isomorphisms are all identities.
A monoidal category $C$ is {\it left closed} ({\it right closed}) when
${-}\otimes b$ ($a\otimes{-}$) has a right adjoint. When both exist it
is called biclosed. When $C$ is symmetric, either left closed or right
closed implies biclosed, and in this case we simply call it closed.
The right adjoint to ${-}\otimes b$ is notated ${-}^b:C\to C$ and
defined by an isomorphism $\Hom(a\otimes b,c)$ and $\Hom(a,c^b)$
natural in $a$ and $c$. Setting $a$ to $I$ yields
via $\lambda$ the natural isomorphism $b\to c\cong I\to c^b$, that is,
$\Hom$ is naturally isomorphic to $\Hom':C\op\times
C\stackrel{{-}^{-}}{\to}C\stackrel{\Hom(I,-)}{\longrightarrow}\Set$.
In this sense ${-}^{-}$ {\it represents} $\Hom(b,c)$, making it the
{\it internal hom}(functor). As $\R\op_\ge$ in example (3) below
shows, $I$ need not determine $\otimes$ and hence the internal hom even
up to isomorphism, showing that it is possible for the internal hom to
contain information not present in the external hom even together with
Since left adjoints preserve colimits, we have in any closed category
$(A+B)\otimes C\cong A\otimes C+B\otimes C$ and $C\otimes(A+B)\cong
C\otimes A+C\otimes B$ when the coproduct $A+B$ exists and $A\otimes
0\cong 0\cong 0\otimes A$ when the initial object 0 exists.
A category $D$ with all finite products determines the {\it cartesian}
symmetric monoidal category $(D,\times,1)$. When the latter is closed
(common but not universal, e.g. {\bf Top}), $D$ is said to be {\it
cartesian closed}.
\subsection{Examples of Monoidal Categories}
We illustrate the above definitions with the monoidal categories we
will be using in KL. Most of these will be closed and bicomplete, the
kind we are most interested in.
(1) Each successor ordinal $\bf n{+}1$, as an $n{+}1$-object category
with $n{+}2 \choose 2$ morphisms $i\to j$ where $0\le i\le j\le n$,
forms the cartesian closed category algebraic topologists call $[n]$.
That is, the symmetric monoidal structure is $(n{+}1,\land,n)$, and the
right adjoint of $\land$, the internal hom ${-}^{-}$, must be the
largest $a$ such that $a\land b\le c$, namely $n$ when $b\le c$ and $c$
otherwise. The product of two such cartesian closed ordinals or cco's
is the cco $[m]\times[n]=[m+n]$.
But the category $\bf n{+}1$ = $[n]$ admits other monoidal structures,
all strict since $\bf n{+}1$ has no nonidentity isomorphisms, and all
bicomplete. Of these, $2^n$ are idempotent ($x\otimes x=x$), since
each is representable as a permutation of $\{0,1,\ldots,n\}$ whose
domain partitions into two blocks on one of which the permutation is
monotone and on the other antimonotone.
Such a permutation can be written down by writing $0,1,2,\ldots,I$ (the
monotone block) from left to right and then reversing direction so as
to write $I+1,I+2,\ldots,n$ (the antimonotone block) from right to left
interleaved arbitrarily with the monotone block, leaving $I$ at the far
right. For $n=3$ this can be done in eight ways, namely $0123$,
$01_32$, $0_312$, $0_{32}1$, $_3012$, $_30_21$, $_{32}01$, $_{321}0$,
here distinguishing the two blocks by writing the second as
subscripts. Then $x\otimes y$ is taken to be the earlier of $x$ and
$y$ in the permutation. Since $I$ is always at the right end of the
permutation it will always be the identity of $x\otimes y$. For
$\otimes$ to be a functor it suffices that it be monotone, which the
reader may verify.
For $n>0$ exactly half of these are closed. For to be closed we
require that for any $b$ and $c$ there be a largest $a$ for which
$a\otimes b\le c$. Setting $c=0$ shows that $0\otimes b$ must be 0 for
all $b$, whence a necessary condition is that the permutation start
with 0. But this is also sufficient since there then exists a solution
in $a$ to $a\otimes b\le c$, namely $a=0$; finiteness then ensures a
largest solution. These then are the {\it idempotent closed ordinals}
or ico's.
There is therefore a unique ico {\bf 2}, namely $[1]$. Here $\otimes$
is $\land$ and $I=1$. (The nonclosed one has $\otimes=\lor$ and
$I=0$.) This category provides the metric for preordered sets. This
two-valued cartesian closed logic is that of ordinary precedence, where
for any pair $u,v$ of events there are two cases: either $u$ is
constrained to precede $v$, or not.
There are two closed categories on 3, each appearing implicitly in one
of H. Gaifman's two papers on concurrency. In each, the elements of 3
represent strengths of temporal precedence constraint between two
events, with 0 representing no constraint. In the noncartesian case,
call it $\three'$, 1 represents nonstrict temporal precedence and 2
strict, with $1\otimes 2=2$ ($u\le v<w\to u<w$). This structure is
hidden in the two-relation ``prosset'' model \cite{GP} used in the
proof of Kahn's principle relative to a pomset-based semantics of nets
\cite{Pr86}.
For the cartesian closed $\three$, 1 denotes ``temporal'' or accidental
order and 2 causal \cite{Ga89}. Here $1\otimes 2=1$, that is, if $u$
accidentally precedes $v$ whereas $v$ causes (necessarily precedes)
$w$, then we may only infer that $u$ accidentally precedes $w$. Thus
one may identify the logic of causal and accidental precedence with the
cartesian closed category $\three$.
Of the four idempotent closed categories on 4, described by the first
four permutations on the list five paragraphs above, the second and
third have the same $I$, namely 2, but their internal homfunctors
differ at $1^1$. Composing $\Hom(I,-)$ with either yields the external
homfunctor for 4, whence the category and $I$ together are not
sufficient to determine either $\otimes$ or the internal homfunctor.
However neither of these are cartesian closed, and in fact for all $n$
the cartesian closed structure is the unique one with $I=n$. We do not
as yet have a natural application for any of the structures on 4.
(2) We have already discussed $\Set$ with $\otimes$ taken to be
cartesian product, as a basic example of a nonstrict category. This
monoidal structure for $\Set$ is cartesian closed, and will always be
the one we have in mind when referring to $\Set$ as a monoidal
category. In the case of $\Set$ the internal homfunctor is {\it
identified with} its external one.
(3) Let $\R_\land$ denote the real numbers together with $\infty$ and
$-\infty$ with the usual ordering and considered as a category in the
usual way. Now $\R_\land$ is bicomplete, and furthermore is cartesian
closed with $a\otimes b=a\land b$, $I=\infty$, and internal homfunctor
$c^b=\infty$ for $b\le c$ and $c$ otherwise (cf. the cartesian closed
ordinals above). $\R_\land$ is isomorphic to its opposite
$\R\op_\lor$, the reals with their order reversed and with $\otimes$
now $\lor$. $\R\op_\lor$ is the metric used for so-called ultrametric
spaces.
However a more useful closed structure for our purposes will be that
obtained by taking tensor product to be not min but +, making the unit
0, and with $\infty+({-}\infty)=-\infty$, necessary in order to be
closed. We denote it by $\R$, or $\R_+$ when there might be
confusion. To be closed requires $c^b$ satisfying $a+b\le c\cong a\le
c^b$, for which $c^b=c-b$ is the patently obvious solution. Hence $\R$
is bicomplete and closed, but of course not cartesian closed since, as
we saw with the ordinals, a category admits at most one cartesian
closed structure.
We use $\R$ to represent lower bounds on delay. A distance of 5 units
from event $u$ to event $v$ means that $v$ must wait at least 5 units
after $u$. Thus a delay of 0 from $u$ to $v$ simply asserts that $v$
follows $u$, not necessarily strictly.
Now a delay of -5 units from $u$ to $v$ indicates that $v$ may precede
$u$ by at most 5 units. Hence we can express upper bounds as negative
lower bounds in the opposite direction. So to indicate that $v$ must
follow $u$ by 2 to 5 units we bound from below the delay from $u$ to
$v$ by 2 and that from $v$ to $u$ by -5.
Combining these two directions, we may read the two oppositely oriented
edges between $u$ and $v$ as together defining an interval.
Here as with $\R_\land$, $\R$ is isomorphic to its opposite $\R\op$,
the reals with their order reversed, however this time with the only
change to the monoidal structure being $\infty+(-\infty)=\infty$, this
being the one bit of asymmetry in $\R$. As we have seen, $\R\op$ is
the monoidal structure associated with ordinary metric spaces.
A sometimes useful closed subcategory of $\R\op$, namely $\R\op_\ge$,
is obtained by omitting the negative reals and $-\infty$ \cite{Law}.
The internal homfunctor then becomes {\it truncated} subtraction, in
which negative differences are rounded up to 0. This is the category
of generalized metric spaces; if the further restrictions are made that
distances be symmetric and distinct points are a nonzero distance apart
then we have the usual category of metric spaces and their
contractions, modulo a detail about constant factors in the
contractions. $\R\op_\lor$ may be similarly truncated and its $I$ set
to 0 to yield Lawvere's basic example \cite{Law} of a cartesian and a
noncartesian closed structure on the same category with the same I.
(4) Take $\SR$ to be the category with objects arbitrary sets of reals
and with morphisms $X\to Y$ just when $X\subseteq Y$. This poset is
cartesian closed when we take $\otimes=\cap$ and $I=\R$. As with $\R$
however we shall prefer a different, hence noncartesian, closed
structure, namely $X\otimes Y = \{x+y\mid x\in X,y\in Y\}$ with
$I=\{0\}$, and with internal homfunctor $Z^Y=\{x \in \R \mid \{x\}+Y
\subseteq Z\}$.
The meaning of a set as a delay is that it consists of the disallowed
actual delays. Thus $\emptyset$, like $-\infty$ in $\R$, is no
constraint while $\R$, like $\infty$, disallows all delays.
We may now find $\R$ and $\R\op$, as well as $\R\op$ truncated at 0, as
subcategories of $\SR$. We note in particular that
$\R+\emptyset=\emptyset$, corresponding to $\infty+-\infty=-\infty$ in
$\R$.
(5) Any monoid $(M,\cdot,\epsilon)$ automatically forms a strict
monoidal category by taking the set $M$ as a discrete category.
Alternatively $M$ may be taken as indiscrete (the maximal preorder on
$M$). We refer to these as discrete and indiscrete monoids
respectively.
For a discrete monoid to be closed means simply that for all $b,c$,
$a+b=c$ has a solution in $a$, whence closed discrete monoids coincide
with groups. No nontrivial discrete monoid has finite products or
coproducts.
An indiscrete monoid on the other hand is trivially closed with all
limits and colimits. Only the fact that it is strictly monoidal saves
it from total anarchy. A nonstrict monoidal codiscrete category is no
more than an arbitrary binary operation on a pointed but otherwise
indiscrete set; nevertheless all such are bicomplete and closed.
(6) The category $\Pos$ of partially ordered sets forms a subcategory
of the cartesian closed category $\Pros$ of preordered sets. The
tensor product is direct or cardinal \cite{Birk42} product of
preorders. The cartesian closed structure of $\Pros$ is inherited from
that of its underlying metric, namely the cartesian closed $\two$. The
following section on enrichment treats the passage from the metric to
the spaces in this example and the next two.
By the same token Gaifman's computations with distinct accidental and
causal orders \cite{Ga89} form a subcategory of a cartesian closed
category of such computations with cycles allowed. As with $\Pros$ the
cartesian closed structure is inherited from that of its underlying
metric, here $\three$.
The Gaifman-Pratt ``prossets'' or preordered specification sets
\cite{GP}, each consisting of a set with an irreflexive partial order
$<$ and a preorder $\le$, with $u<v\le w\to u<w$, form a subcategory of
a noncartesian closed category of ``preprossets'' in which $<$ is
itself just a preorder, but still meeting the condition $u<v\le w\to
u<w$.
\subsection{Monoidal Functors}
Monoidal functors, as the appropriate morphisms of monoidal categories,
should preserve both the monoidal and category structure. Just as
strict monoidal categories motivate monoidal categories, so do strict
monoidal functors motivate monoidal functors. A {\it strict monoidal
functor\/} $F:\D\to\D'$ between monoidal categories $\D,\D$ is a
functor $F:D\to D'$ between their underlying categories satisfying
$Fx\otimes'Fy=F(x\otimes y)$ and $I'=FI$ for objects and similarly for
morphisms. (The unit morphism is often written 1 instead of $I$ or
$1_I$.)
{\bf Definition} A {\it lax monoidal functor}
$(F,\tau,t):(D,\otimes,I,\alpha,\lambda,\rho,\gamma)$ $\to$
$(D',\otimes',I',\alpha',\lambda',\rho',\gamma')$ consists of a functor
$F:D\to D'$, a natural transformation $\tau_{xy}:Fx\otimes'Fy\to
F(x\otimes y)$, and a morphism $t:I'\to FI$ of $D'$, with certain
coherence conditions requiring that natural transformations constructed
from $\tau$ and $t$ commute with $\alpha,\lambda,\rho,\gamma$ and all
the other natural transformations corresponding to the equations of the
theory of commutative monoids \cite{EK66a}.
When $\tau$ and $t$ are both isomorphisms or both identities we call
$F$ respectively {\it strong} or {\it strict}. For the remainder of
this paper the default will be strong, that is, we take ``monoidal
functor'' to mean ``strong monoidal functor.'' In particular we take
the morphisms of the category {\bf SMON} of large (symmetric) monoidal
categories to be the strong monoidal functors.
We wish to be able to refer to the ``points'' of spaces. This is
accomplished by the next definition.
{\bf Definition.} The category $\SSM$ is the slice (comma) category
${\bf SMON}/\Set$. Its objects are pairs $(\D,U)$ called {\it
semiconcrete monoidal categories}, where $\D$ is a (large) monoidal
category and $U_\D:\D\to\Set$ is a monoidal ``forgetful functor'' for
$\D$. The morphisms $F:(\D,U)\to(\D',U')$ of $\SSM$ are monoidal
functors satisfying $U=U'F$, $\tau_U=\tau_{U'}\tau_F$, $t_U=t_{U'}t_F$.
Our interest in $\SSM$ is that its members carry enough structure to
support the definitions of the operations $\D!$ and $\D\rhd\E$
constructing categories of spaces and labeled spaces. While this adds
some complexity to the development of enrichment, it does demonstrate
the feasibility of adding such structure when needed. It would be
particularly useful to have a characterization of what structures can
be so added.
All the examples of monoidal categories in our list above belong to
$\SSM$; of these, only the discrete monoids are not bicomplete.
$\Set$, $\Pos$, etc. are large objects in $\SSM$. The ordinal $\one$
is the null object of $\SSM$.
Our insistence on the identity $U=U'F$, as opposed to just a natural
transformation from $U$ to $U'F$, makes for a clean division of labor
between $\SSM$, where the kind language KL operates, and the objects of
$\SSM$, where PSL operates. The significance of this identity is that,
via functors of $\SSM$, KL may act on kinds without disturbing the
underlying sets of objects of those kinds.
For example when we replace a numeric metric by a Boolean one we {\it
identically} preserve the vertex sets of the affected behaviors; only
the distances between their elements change, from numbers to truth
values. In PSL on the other hand we work in a fixed object $\D$ of
$\SSM$, where we may do violence to vertex sets and alphabets via
morphisms of $\D$, but where we cannot change to another $\D$ and so
have no control over the metric or the kind of alphabet.
As a pleasant fringe benefit the bidirectionality of the identity in
$U=U'F$ permits the domain of $\comma$ to consist of all pairs $F,G$ of
functors of $\SSM$, not just those for which there exists a natural
transformation from $U'F$ to $U$. However this benefit would accrue
even from a natural isomorphism $h:U\to U'F$ (assuming $h$ commutes
with both $\tau$ and $t$), whereas identity results
in total separation of the domains of KL and PSL.
\subsection{Examples of Monoidal Functors}
(1) Consider functors $F,G:\R\to \two$, defined by $F(x)=(x\ge 0)$ and
$G(x)= (x>-\infty)$. Each functor equips its target with an
interpretation. $F$ interprets $u\le v$ as saying that $u$ must
precede $v$, while $G$ makes it say that $v$ can only precede $u$ by a
bounded amount. Only $G$ however is strong monoidal, since
$F(1+-1)=F(0)=1$ while $F(-1)\land F(1)=0$. It is straightforward to
show that $G$ and the constantly true functors are the {\it only}
strong monoidal functors from $\R$ to $\two$. In fact with the obvious
order on the functors from $\R$ to $\two$ to make $\two^\R$ a category,
we have $\two^\R\cong\two$ in $\SSM$, with the constant functor in
$\two^\R$ corresponding to 1 in $\two$.
Now consider any functor $F$ from $\two$ to $\R$. $F$ must send 1 to
0, so $F(0)$ cannot be positive. Moreover $F(0) =
F(0\land0)=F(0)+F(0)$ whence $F(0)$ must be either $-\infty$ or 0.
Hence $\R^\two\cong\two$ (again with $\R^\two$ made a category via the
obvious order on its two functors), with the constant functor in
$\R^\two$ corresponding to 1 in $\two$.
(2) The endofunctor $x/2$ from $\R$ to $\R$ that simply halves its
argument is clearly monoidal. This is a ``speedup'' functor that
allows one to pass to a world where everything happens twice as fast.
In fact from $F(a+b)=F(a)+F(b)$ and $F(0)=0$ we infer that the linear
speedups and slowdowns and their negations (time reversals) are the
only functors, and thus we have $\R^\R\cong\R$. The $\infty$ and
$-\infty$ speedups are included, and their range in each case is
isomorphic to the noncartesian closed ordinal $\three'$ with the
convention that $0\otimes\infty=0=0\otimes-\infty$.
(3) We leave it to the reader to verify that $\two^\two\cong\two$
with the constant functor corresponding to 1 as always.
\def\hfdot{\mkern6mu\cdot\mkern6mu}
%\def\item#1#2\enditem{\hfil\break\kern\parindent\llap{#1}{\advance\hsize by-\parindent\vtop{#2}}}
\section{Enriched Categories and the ! Operator}
We now introduce the basic notions of enriched categories. Our hope is
that these will be made more accessible via definitions that are not
only close at hand but presented from the same perspective as the
applications. Enriched categories or $V$-categories are treated
briefly by Arbib and Manes \cite{AM} and exhaustively and precisely by
Kelly \cite{Kel}. Section I-8 of Mac~Lane also touches on them,
without calling them such. As far as we are aware ours is the first
proposed engineering application of Lawvere's vision \cite{Law} of
enriched categories as a combined generalized metric and logic.
\subsection{\D-categories}
The essence of an enriched category may be found in an ordinary
category $C$. Write $\d(u,v)$ for the set of morphisms from $u$ to
$v$. Associated with each triple $u,v,w$ of objects of $C$ is a
function $m_{uvw}:\d(u,v)\times\d(v,w)\to\d(u,w)$ defining
composition. And to each object $u$ there is a function
$j_u:\{\cdot\}\to\d(u,u)$ picking out the identity element
$1_u\in\d(u,u)$.
We pass from this account of an ordinary category $C$ to the notion of
a category $C$ {\it enriched in} $\D$, or $\D$-category, by requiring
each $\d(u,v)$ to be an object of $\D$ instead of a set, and each
$m_{uvw}$ and $j_u$ be a morphism of $\D$ instead of a function. The
class of objects of $C$ do not participate in this passage: the objects
of $C$ remain a class. A functor $F:A\to B$ participates partially
in this passage: when we view it as the $\D$-functor $F:A\to B$, its
object part remains unchanged but its action on morphisms, viewed for
each pair $uv$ of objects of $A$ as a function
$F_{uv}:\d^A(u,v)\to\d^B(F(u),F(v))$, becomes a morphism of $\D$
between homobjects $\d^A(u,v)$ and $\d^B(F(u),F(v))$ of $A,B$
respectively.
From this viewpoint, ordinary categories and functors between them are
$\Set$-categories and $\Set$-functors, that is, categories and functors
enriched in $\Set$.
{\bf Definition.} A \D-{\it category} $A=(V,\d,m,j)$, or
{\it category enriched in} \D, consists of a set $V$,
a function $\d:V^2\to\ob(\D)$, and
families of morphisms of \D, namely compositions
$m_{uvw}:\d(u,v)\otimes\d(v,w)\to\d(u,w)$ and
identities $j_u:I\to\d(u,u)$,
such that for all objects $u,v,w$ in $V$ the following diagrams commute.
These diagrams express associativity of composition, and the left
and right identity laws, explained below.
$$\commdiag
{(\d(u,v)\otimes \d(v,w))\otimes \d(w,x) &\rTo{\alpha_{\d(u,v)\d(v,w)\d(w,x)}}{}\across 3 & \d(u,v)\otimes
(\d(v,w)\otimes \d(w,x))\cr \dTo{}{m_{uvw}\otimes1} & & & &\dTo{1\otimes m_{vwx}}{}\cr
\d(u,w)\otimes \d(w,x) &\rTo{m_{uwx}}{} & \d(u,x) & \lFrom{m_{uvx}}{} &\d(u,v)\otimes \d(v,x)\cr
$$\commdiag
{I\otimes \d(u,v)&\rTo{\lambda_{\d(u,v)}}{} &\d(u,v)&\lFrom{\rho_{\d(u,v)}
}{} &\d(u,v)\otimes I\cr
\dTo{}{j_u\otimes 1}& &\vEq{}{}& &\dTo{1\otimes j_v}{}\cr
\d(u,u)\otimes \d(u,v)&\rTo{m_{uuv}}{}&\d(u,v)&\lFrom{m_{uvv}}{}&\d(u,v)\otimes
\d(v,v)\cr
For $\D=\two$ the diagrams expressing the associativity and identity
laws hold vacuously since $\D$ is an ordered set. Thus composition and
identity become
$$\eqalign
{m_{uvw}:&u\le v~\land~ v\le w~~\to~~u\le w\cr
j_u:&u\le u \cr}
expressing respectively transitivity and reflexivity. Thus
\two-categories (categories enriched in \two, as opposed to
2-categories which here are \Cat-categories) are just preorders.
For $\D=\R\op$, also an ordered set, we again may ignore the associativity and
identity laws. Here we get
$$\eqalign
{m_{uvw}:&d(u,v)+d(v,w)\ge d(u,w)\cr
j_u:&0\ge d(u,u)\cr
%In this case $m$ expresses the triangle inequality while $j$ forces
%$\d(u,u)=0$, as there are no negative distances. Thus $\R\op$-categories are
%what we shall call premetric spaces (Lawvere calls them generalized
%metric spaces), lacking the other two Fr\'echet conditions
%$\d(u,v)=\d(v,u)$ and $\d(u,v)=0$ implies $u=v$. This example supports
%a more informative notion of concurrent behavior than preorders, since
%now the {\em delay} between two events can be indicated in addition to their
%precedence relation.
For $\D=\Cat$ we obtain ordinary 2-categories, along the same lines as
for $\D=\Set$ but with the addition of 2-cells between morphisms of
the same homset.
\subsection{\D-functors}
{\bf Definition}. A \D-{\it functor} $F:A\to B$ where $A$ and $B$
are {\D}-categories consists of a function $F:V_A\to V_B$ between object
sets together with a family $F_{uv}:\d_A(u,v)\to \d_B(Fu,Fv)$
of morphisms between homobjects satisfying the following conditions
stating that compositions and identities are preserved.
$$\vbox{$\commdiag
{\d_A(u,v)\otimes \d_A(v,w)&\rTo{m_{uvw}}{}&\d_A(u,w)\cr
\dTo{F_{uv}\otimes F_{vw}}{}& &\dTo{F_{uw}}{}\cr
\d_B(Fu,Fv)\otimes \d_B(Fv,Fw)&\rTo{m_{Fu,Fv,Fw}}{}&\d_B(Fu,Fw)\cr
\hfill\commdiag
{I&\rTo{j_u}{}&\d_A(u,u)\cr
\vEq{}{}&&\dTo{F_{uu}}{}\cr
I&\rTo{j_{Fu}}{}&\d_B(Fu,Fu)\cr
}$}$$
The elements of a $\D$-functor are depicted on the left of the following
figure, and compose in the obvious way as shown on the right.
$$\commdiag
{ u & \rImplies{\d_A(u,v)}{} & v\cr
\dMapsto{F}{} & \dTo{F_{uv}}{} &\dMapsto{F}{}\cr
\noalign{\vskip5pt}
Fu & \rImplies{\d_B(Fu,Fv)}{} &Fv\cr
~~~~~~~~
\commdiag
{ u & \rImplies{\d_A(u,v)}{} & v\cr
\dMapsto{F}{} & \dTo{F_{uv}}{} &\dMapsto{F}{}\cr
\noalign{\vskip5pt}
Fu & \rImplies{\d_B(Fu,Fv)}{} &Fv\cr
\dMapsto{G}{} & \dTo{G_{Fu,Fv}}{} &\dMapsto{G}{}\cr
\noalign{\vskip5pt}
GFu & \rImplies{\d_C(GFu,GFv)}{} & GFv\cr
It can be seen that \two-functors are monotone functions, \R-functors
and $\R\op$-functors are expanding and contracting maps respectively,
and \Set-functors are ordinary functors. In our computational
application a \D-functor is an event map which maintains all temporal
constraints, though the result may have more constraints than the
source.
\subsection{Enrichment as a Function}
We now define the object part of the functor $-!:\SSM\to\SSM$. Given a
semiconcrete monoidal $\D$ define $\D!$ to be the category {\D-\Cat} of
small categories enriched in $\D$.
$\D!$ is symmetric monoidal as follows \cite{EK66a}. The tensor product
of two $\D$-categories $A$ and $B$ is defined to have as objects the
cartesian product $V_{A} \times V_{B}$, and homobjects
$$\d((u,v),(u',v')) = \d_{A}(u,u') \otimes_\D \d_{B}(v,v').$$ The
symmetry of $\D$ ensures that appropriate composition morphisms can be
defined and that $\D!$ is symmetric to boot. The corresponding unit
$I$ is the one-object category with homobject
$\d_{I}(\cdot,\cdot)=I_\D$.
To make $\D!$ semiconcrete we define the forgetful functor
$U_{\D!}:\D!\to\Set$ mapping each $\D$-category $A$ to its underlying
set $V_A$ of objects and each $\D$-functor to its object map.
$U_{\D!}$ is monoidal by the above definition of $\otimes$ for $\D!$.
In our application $U$ yields the event set $U(b)$ of a behavior $b$.
We summarize the above as follows.
\begin{lemma}
If $\D$ is an object of $\SSM$ then so is $\D!$.
\end{lemma}
\subsection{Enrichment as a Functor}
We now define the action of ! on morphisms of $\SSM$.
\def\Fcat{{F_{\hbox{cat}}}}
{\bf Definition}
Given a monoidal functor $(F,\tau,t):\D\to \E$, define the functor
$(F,\tau,t)!=(F!,\tau!,t!):\D!\to\E!$ as follows:
$F!$ takes a $\D$-category $A$ to the $\E$-category $F!A=(V,\d,m,j)$
defined by
$$\eqalign{V &= V_A {\rm ~~~~(that~is,~~} U_{\D!}=U_{\D'!}F!) \cr
\d(u,v) &= F(\d_A(u,v))\cr
m_{uvw} &= F(m^{A}_{uvw})\tau_{\d_A(u,v)\d_A(v,w)}\cr
j_u &= F(j^A_u)t\cr
$F!$ takes a \D-functor $G:A\to B$, to that $\E$-functor $F!G$ which
has the same object function and takes $(F!G)_{uv}$ to $F(G_{uv})$.
Thus $F!$ acts only on the distances within a behavior, and on the
``distance comparison'' part of a morphism of behaviors.
For $\D$-categories $A$ and $B$ and objects $u$ and $u'$ or $A$, and
$v$ and $v'$ of $B$, define $$(\tau!)_{(u,v)(u',v')} =
\tau_{\d_A(u,u'),\d_B(v,v')}.$$
By the definition of $F!$, $F!I_{\D!}$ is an $\E$-category with a
single object. Thus there is a unique possible object map for
$t!:I_{\E!}\to F!I_{\D!}$. $t!$ on homobjects must be a map from
$I_\E\to FI_\D$; define this map to be $t$.
\begin{lemma}
If $(F,\tau,t):\D\to\E$ is a morphism of $\SSM$ then so is
$(F!,\tau!,t!):\D!\to\E!$.
\end{lemma}
We omit the straightforward, though tedious, proof.
Finally, by checking that $!$ preserves composition and identities, we
obtain the following.
\begin{theorem}
! is an endofunctor on $\SSM$.
\end{theorem}
%\subsection{Enrichment as a Functor}
%We now define the action of ! on morphisms of $\SSM$.
%\def\Fcat{{F_{\hbox{cat}}}}
%{\bf Definition}
%Given a monoidal functor $F:\D\to \D'$, define the functor
%$F!:\D!\to\D'!$ as follows:
%For any \D-category $A$, we obtain the $\D'$-category $F!A=(V,\d,m,j)$ as
%$$\eqalign{V &= V_A {\rm ~~~~(that~is,~~} U_{\D!}=U_{\D'!}F!) \cr
% \d(u,v) &= F(\d_A(u,v))\cr
% m_{uvw} &= F(m^{A}_{uvw})\tau_{\d_A(u,v)\d_A(v,w)}\cr
% j_u &= F(j^A_u)t\cr
%For any \D-functor $G:A\to B$, we obtain a $\D'$-functor $F!G$ by
%using the same object function and by taking $(F!G)_{uv} =
%F(G_{uv})$. Thus $F!$ acts only on the distances within a behavior, and
%on the ``distance comparison'' part of a morphism of behaviors.
%\begin{lemma}
%If $F:\D\to\D'$ is a morphism of $\SSM$ then so is $F!:\D!\to\D'!$.
%\end{lemma}
%We omit the straightforward proof.
%From these two lemmas we obtain the following.
%\begin{theorem}
%! is an endofunctor on $\SSM$.
%\end{theorem}
\subsection{Examples}
(1) Section 2 contains a figure illustrating the example
$(a;^3b)\otimes(c;^2d)$ of orthocurrence.
%(1) We saw in Section 2 the example $010\otimes TR$ of a stream $010$
%of three messages flowing along a transmit-receive channel $TR$. This
%example was located in $\Pom$. If we relocate it to $\R\op!$ (ignoring
%labels) we may talk about upper bounds on delay. For example
%$(0;^21;^30)\otimes(T;^7R)$ specifies a delay of at most 2 units between
%the first two messages and 3 between the last two, compounded with a
%delay of 7 units along the channel. Pairs $u,v$ of events without a
%chain of edges from $u$ to $v$ are presumed to have an edge labeled
%$\infty$, corresponding to no constraint.
%$$\commdiag{
%0 & \rTo{2}{} & 1 & \rTo{3}{} & 0\cr
%\hskip1em \otimes \hskip1em
%\commdiag{
%T\cr
%\dTo{7}{}\cr
%R\cr
%\hskip2em = \hskip2em
%\commdiag{
%(0,T)& \rTo{2}{} & (1,T) & \rTo{3}{} & (0,T) \cr
%\dTo{7}{}& & \dTo{7}{} & & \dTo{7}{} \cr
%(0,R)& \rTo{2}{} & (1,R) & \rTo{3}{} & (0,R) \cr
The triangle inequality requires the upper bounds on diagonals across
squares and rectangles to be at most the sum of the bounds encountered
along any path around the sides, e.g. 5 from $ac$ to $bd$. This is
exactly the effect obtained by defining tensor product of spaces
(enriched categories) in terms of the addition (tensor product) of the
underlying metric. Had we defined tensor product of spaces in terms of
ordinary product in the metric (min), we obtain the next example,
ordinary product of spaces.
(2) Consider the monoidal functor $F:\R\to\two$ which takes $-\infty$
to 0 and all else to 1. Application of $F!$ to each of the illustrated
examples of Section 2 with vertex labels deleted to make them objects
of $\R!$, produces the corresponding object of $\two!$, a poset, in
effect by erasing the edge labels.
\subsection{Continuity of !}
We now show that ! enjoys certain continuity properties. These will be
used in section~\ref{sec:langs} to show that all KL kinds are
bicomplete and closed, which in turn ensures that PSL is well-defined.
\begin{proposition} If {\D} has an initial object $0$ and a natural
isomorphism $A\otimes 0\cong 0$ then {\D!} has coproducts.
\end{proposition}
The natural isomorphism $A\otimes 0 \cong 0$ always exists when $\D$ is
closed.
A discrete category is a copower in $\Cat$ of 1, that is, the coproduct
of a set of one-object categories, yielding the following similar
result:
\begin{proposition}
If {\D} has an initial object $0$ and $0\otimes A\cong 0\cong A\otimes 0$,
then the forgetful functor $U_{\D!}:\D!\to\Set$ has a left adjoint
$D:\Set\to\D!$ taking a set $S$ to the corresponding {\rm discrete}
{\D}-category ($\d_{DS}(u,v)=I$ if $u=v$, 0 otherwise).
\end{proposition}
The dual result to this, though not with a dual proof, is:
\begin{proposition}
If {\D} has a final object $1$, $U_{\D!}:\D!\to\Set$ has a right adjoint
$E:\Set\to\D!$ taking the set $X$ to the corresponding chaotic
(codiscrete) {\D}-category ($\d_{DS}(u,v)=1$ for all $u,v$).
\end{proposition}
Meanwhile, for the case of general colimits we refer to a result of
\cite{BCSW}.
\begin{theorem}
If {\D} is cocomplete and {\D} is closed then {\D!} is cocomplete.
\end{theorem}
There is also a similar but much easier result about limits. PSL needs
limits for local product and hence local concatenation.
\begin{theorem}
If {\D} has limits of (small) type {\cal J}, then so does {\D!}.
\end{theorem}
If any one theorem could be considered at the heart of enriched
categories it is the following. Kelly's proof (\cite{Kel} p.55, see
also Lawvere \cite{Law} p.153) is dauntingly formal, to which we offer
an informal counterpart.
\begin{theorem}
If \D\ is complete and closed then $\D!$ is closed.
\end{theorem}
\begin{proof}
The objects of the $\D$-category $C^B$ are of course just the
$\D$-functors from $B$ to $C$. What is less obvious is the appropriate
homobject $\d_{C^B}(U,V)$ abstracting the homset of natural
transformations between any two $\D$-functors $U,V$ of $C^B$. The
natural {\it and unnatural} transformations are given by $\prod_{b\in
B}\d_C(Ub,Vb)$; we seek its subobject $\int_{b\in B}\d_C(Ub,Vb)$ (an
{\it end} \cite{Mac} p.219) consisting of just the natural ones.
Now for $\D=\Set$ such a transformation $\tau$ determines, for all
$b,b'$, two functions $\rho_\tau,\sigma_\tau:\d_B(b,b')\to
\d_C(Ub,Vb')$, that is, two elements of $\d_C(Ub,Vb')^{\d_B(b,b')}$.
Here $\rho_\tau$ takes $f:b\to b'$ to $V(f)\circ\tau_b$, while
$\sigma_\tau$ takes the same $f$ to $\tau_{b'}\circ U(f)$. But these
are just the two sides of the square
$$\commdiag{
Ub & \rTo{\tau_b}{} & Vb \cr
\dTo{Uf}{} & & \dTo{Vf}{} \cr
Ub' & \rTo{\tau_{b'}}{} & Vb' \cr
which must be equal for $\tau$ to be natural. Encapsulating ``for all
$b,b'$'' as a product over $b,b'\in B$ and generalizing to arbitrary
$\D$ (formalized in Kelly's proof), we may therefore obtain the desired
homobject $\d_{C^B}(U,V)$ as the equalizer of
$$ \d_{C^B}(U,V) \commdiag{\rTo{}{}}
\prod_{b\in B}\d_C(Ub,Vb)
\commdiag{\rTo{\rho}{}\cr\rTo{}{\sigma}}
\prod_{b,b'\in B}\d_C(Ub,Vb')^{\d_B(b,b')}.$$
This construction required an exponential, two products, and an
equalizer, for which it suffices that $\D$ be complete and closed.
\end{proof}
\section{Comma Categories and the $\comma$ Operator}
\def\arrow#1{\stackrel{#1}{\longrightarrow}}
The ! operator creates categories of spaces with distances between
pairs of points. We wish to interpret the points as events and the
distances as temporal constraints on the events. To complete this
interpretation we must have some way to say what type of event each
point represents.
Given a labeling alphabet, a set $\Sigma$, we label the underlying set
$U(p)$ of points of a space $p$ with a function $\mu:U(p)\to\Sigma$.
For $p$ a poset this is the notion of pomset or partially ordered
multiset as a labeled partial order.
Our framework can be simplified by dropping the assumption that
$\Sigma$ is a pure set and instead associating with the category
supplying $\Sigma$ a forgetful functor $V$ that strips off any
unwanted structure to reveal its underlying set $V(\Sigma)$. Our
labeling function then becomes $\mu:U(p)\to V(\Sigma)$.
But this is what it means to be an object of the comma category
$(U{\downarrow}V)$. Moreover the morphisms of this comma category from
$\mu:U(p)\to V(\Sigma)$ to $\mu':U(p')\to V(\Sigma')$, namely pairs of
maps $f:p\to p'$ and $t:\Sigma\to\Sigma'$ such that $V(t)\mu =
\mu'U(f)$, turn out to be just what we need.
\subsection{The Function $\comma$}
Given categories $\D$, $\E$ in $\SSM$ (i.e., both symmetric monoidal
equipped with functors $U:\D\to\Set$, $V:\E\to\Set$, respectively), we
define $\D\comma\E$ to be the comma category $\UV$. Recall
that this is the category whose objects are triples $\<x,\mu,u>$
where $\mu:Ux\to Vu$, and whose morphisms are pairs $\<f,g>$ such
that the following square commutes:
$$\commdiag{
Ux & \rTo{\mu}{} & Vu \cr
\dTo{Uf}{} & & \dTo{Vg}{} \cr
Ux' & \rTo{\mu'}{} & Vu'.
%define $\D\comma\E$ to be the comma category $(\UV)$, that is, the
%subcategory of $\D\times\SSM^\to\times\E$ whose objects $\<x,\mu,u>$
%satisfy $\mu:Ux\to Vu$ and similarly whose morphisms $\<f:x\to
%x',s,g:u\to u'>$ have for $s$ the commuting square
%$$\commdiag{
% Ux & \rTo{\mu}{} & Vu \cr
% \dTo{Uf}{} & & \dTo{Vg}{} \cr
% Ux' & \rTo{\mu'}{} & Vu'.
%In the following diagrams representing such morphisms $\<f:x\to
%x',s,g:u\to u'>$ we give only $s$, $f$ and $g$ being inferrable from $s$.
$\D\comma\E$ can be made symmetric monoidal by defining the tensor
product
\commdiag{
Ux & \rTo{\mu}{} & Vu\cr
\dTo{Uf}{} & & \dTo{Vg}{} \cr
Ux' & \rTo{\mu'}{} & Vu' }
~~~~~~~~\otimes~~~~~~~~
\commdiag{
Uy & \rTo{\nu}{} & Vv \cr
\dTo{Uh}{} & & \dTo{Vk}{} \cr
Uy' & \rTo{\nu'}{} & Vv'}
to be
\commdiag{
U(x\otimes y) & \lTo{\tau_U}{\congh} & Ux\times Uy & \rTo{\mu\times\nu}{} & Vu\times Vv
& \rTo{\tau_V}{\congh} & V(u\otimes v)\cr
\dTo{}{U(f\otimes h)} &
& \dTo{Uf\times Uh}{} & & \dTo{Vg\times Vk}{} & & \dTo{V(g\otimes k)}{}
U(x'\otimes y') & \lTo{\tau_U}{\congh} & Ux'\times Uy' & \rTo{\mu'\times\nu'}{} & Vu\times Vv
& \rTo{\tau_V}{\congh} & V(u\otimes v)
The unit object of $D\comma \E$ is taken to be
$I_{\textstyle\D\comma\E}=\<I_{\D},h,I_{\E}>$, where $h=t_Vt_U^{-1}$
$$\commdiag{UI_{\D}&\lFrom{t_U}{\congh}&1&\rTo{t_V}{\congh}&VI_{\E}}$$
(In fact one may use these definitions for $\otimes$ and $I$ in the
case where $V$ is only lax monoidal; $U$ must still be strong monoidal).
Now we must show that this product is associative,
symmetric, and $I_{\textstyle\D\comma\E}$ is in fact an identity. We outline
briefly the definition of the associativity natural transformation
$\alpha_{\textstyle\D\comma\E}$. (Other required natural
transformations are defined similarly.)
We take
$\alpha_{{\textstyle\D\comma\E},\<x,\mu,u>\<x',\mu',u'>\<x'',\mu'',u''>}$
to be $\<\alpha_{\D,xx'x''},\alpha_{\E,uu'u''}>$. This is a
well-defined morphism because $V(\alpha)(\mu\otimes(\mu' \otimes
\mu''))$ is equal to $((\mu \otimes \mu')\otimes \mu'')U(\alpha)$.
This requirement follows from properties of monoidal functors and
natural transformations. The coherence conditions on
$\alpha_{\textstyle\D\comma\E}$ are established similarly.
We make $\D\comma\E$ semiconcrete by using the functor
$$\commdiag{\D\comma\E&\rTo{\pi_0}{}&\D&\rTo{U}{}&\Set}$$
This makes the underlying sets of objects of $\D\comma\E$ those of
objects of $\D$. If the objects of $\D$ are spaces while those of
$\D\comma\E$ are labeled spaces, the underlying sets of the latter are
the same as those of the former, i.e. the labels are ignored.
\subsection{$\comma$ as a Functor}
To complete the description of the functor $\comma$ we describe its
action on morphisms (i.e., functors) $F,G$ of $\SSM$.
Recall that we impose the condition $U=U'F$ in the definition of the
morphisms $F$ of $\SSM$ as well as the condition that $F$ be strong monoidal.
The functor $F\comma G:\SSM~^2\to\SSM$ acts thus:
$$\commdiag{
\D & \rTo{U}{} & \Set & \lFrom{V}{} & \E \cr
\dTo{}{F} & & \vEq{}{} & & \dTo{G}{} \cr
\D' & \rTo{U'}{} & \Set & \lFrom{V'}{} & \E' \cr
\rMapsto{\comma}{}
\commdiag{
\D\comma\E & \rTo{U\pi_0}{} & \Set \cr
\dTo{}{F\comma G} & & \vEq{}{} \cr
\D'\comma\E' & \rTo{U'\pi_0'}{} & \Set \cr
where $\pi_0$ projects onto $\D$ as before and $F\comma G$ takes each
morphism $\<f,g>$ of $\D\comma\E$ to $\<Ff,Gg>=\<U'Ff,V'Gg>$.
%morphism $\<f,s,g>$ of $\D\comma\E$ to $\<Ff,s,Gg>$ as shown, where
%$s$ denotes the innermost square of the following figure, and hence
%also the larger rectangle it is embedded in.
$$\commdiag{
U'Fx & \hEq{}{} & Ux & \rTo{\mu}{} & Vu & \hEq{}{} & V'Gu\cr
\dTo{U'Ff}{}&&\dTo{Uf}{}&&\dTo{}{Vg}&&\dTo{}{V'Gg}\cr
U'Fx' & \hEq{}{} & Ux' & \rTo{\mu'}{} & Vu' & \hEq{}{} & V'Gu'\cr
We now need to verify that $F\comma G$ is strong monoidal.
This involves exhibiting a morphism
$\tau_{\textstyle F\comma G}:(F\comma G)\<x,\mu,u>\otimes(F\comma G)\<y,\nu,v>\to(F\comma G)(\<x,\mu,u>\otimes\<y,\nu,v>)$ of $\D'\comma\E'$
for any pair $\<x,\mu,u>$, $\<y,\nu,v>$ both in $\D\comma\E$,
namely that given by pairing $\tau_F:Fx\times Fy\to F(x\otimes y)$
with the corresponding $\tau_G$.
That this is indeed a morphism of $\D'\comma\E'$ depends on the
commutativity of the squares appearing in
$$\commdiag{
U'(Fx\otimes Fy)& \lFrom^{\tau_{U'}}_\cong & U'Fx\times U'Fy &&
V'Gu\times V'Gv & \rTo^{\tau_{V'}}_\cong & V'(Gu\otimes Gv) \cr
\VerticalMapExtraDepth14ex \dTo&& \vEq&
& \vEq&&\VerticalMapExtraDepth14ex \dTo\cr
U'\tau_F~\cong~~~~&& Ux\times Uy &
~~~~\stackrel{\mu\times\nu}{\longrightarrow}~~~~
&Vu\times Vv && ~~~~\cong~V\tau_G\cr
&&\dTo^{\tau_U}_\cong && \dTo^\cong_{\tau_V}&&\cr
U'F(x\otimes y)& \hEq & U(x\otimes y) &
&V(u\otimes v) & \hEq & V'G(u\otimes v)\cr
which follows from the $\tau_U=(U'\tau_F)\tau_{U'}$ condition in the
definition of $\SSM$.
That the morphisms $\tau_{\textstyle F\comma G}$ constitute a natural
transformation and that they satisfy the appropriate coherence
conditions directly follows from the corresponding naturality and
coherence conditions on $\tau_F$ and $\tau_G$.
\subsection{Continuity of $\comma$}\label{sec:comfunctors}
\def\J{J}
We now wish to lift limits and colimits that exist in the
component categories to comma categories defined from them. To do this
we must deal with functors into comma categories.
The following lemma can be applied whenever functors into a comma
category are to be defined. It states that defining a functor from a
category $\J$ into $(U{\downarrow}V)$, where $U:\A\to \C$ and $V:\B\to \C$,
is essentially equivalent to defining functors $F:\J\to \A$ and
$G:\J\to \B$ and a natural transformation from $UF$ to $VG$.
Furthermore, natural transformations between such functors are
essentially equivalent to a pair of natural transformations satisfying
a certain commutativity condition.
For any functor $F:\X\to\Y$
denote by $F^\J$ the functor from the functor category
$\X^\J$ to $\Y^\J$ defined by ``left-composition with $F$''.
Then we have:
\begin{lemma}\label{lem:functorcomma}
$\displaystyle (\UV)^\J \cong (U^\J \darrow V^\J).$
\end{lemma}
\begin{proofo}
The comma category $\UV$ has the projections
$\pi_0:\UV\to\A$ and $\pi_1:\UV\to\B$, and defines a natural transformation
$\nu:U\pi_0\to V\pi_1$. (In fact this is an alternative definition
of the concept of a comma category.)
Hence, given a functor, $F:\J \to \UV$, we can define
functors $\pi_0F:\J\to\A$ and $\pi_1F:\J\to\B$, and a natural transformation
$\nu\circ F:U\pi_0F\to V\pi_1F$. This defines an object of the
comma category $(U^\J \darrow V^\J)$. It is routine to extend this
mapping to a functor
$\displaystyle (\UV)^\J \to (U^\J \darrow V^\J)$ and show that it
is an isomorphism of categories.
\end{proofo}
We can use this lemma to prove a basic result about limits in comma
categories. (Note: Although this result is purely categorical we are
not aware of its having appeared in any textbook. A marginally weaker
form was proven by Tarlecki in a rather different context~\cite{Tar85}
and Mac~Lane proved a special case as part of his proof of Freyd's
Adjoint Functor Theorem~\cite[page 123]{Mac}.)
\begin{theorem}\label{thm:comma}
Let $U:\A\to\C$ and $V:\B\to\C$ be functors, and $\J$ be a category.
If $\A$ and $\B$
have all $\J$-limits and $V$ preserves $\J$-limits then the comma
category $(U\darrow V)$ has all $\J$-limits
\end{theorem}
\begin{proof}
Let $F:\J\to (U\darrow V)$ be an $\J$-diagram in $(U\darrow V)$. Then by
lemma~\ref{lem:functorcomma}, $F$ can
be considered as a triple, $\<F_1,\mu,F_2>$ where
\begin{eqnarray*}
F_1:\J\to\A\\
F_2:\J\to\B\\
\mu:UF_1\to VF_2
\end{eqnarray*}
Since $\A$ and $\B$ have $\J$-limits, both $F_1$ and $F_2$ have limits.
Denote their limiting cones by $\lambda^1:\lim F_1\to F_1$ and
$\lambda^2:\lim F_2 \to F_2$ respectively.
Since $V$ preserves $\J$-limits, $V(\lim F_2)$ is a limit of $VF_2$,
with limiting cone $V\lambda^2$.
Now the composite natural transformation
U(\lim F_1)\to{U\lambda^1} UF_1 \to{\mu} VF_2
is a cone from $U(\lim F_1)$ to $VF_2$, so by the universal property of
limits there exists a unique arrow $p$ such that the following diagram
of functors and natural transformations commutes. (Note: in this and
the following diagrams an object of $C$ represents the constant functor
to that object and an arrow of $C$ represents the ``constant''
natural tranformation between such constant functors.)
\begin{center}\begin{picture}(125,65)
\put(55,51){$\scriptstyle U\lambda^1$}
\put(0,45){$U(\lim F_1)$}\put(45,48){\vector(1,0){45}}\put(93,45){$UF_1$}
\put(9,25){$\scriptstyle p$}\put(15,42){\vector(0,-1){29}}
\put(105,42){\vector(0,-1){29}}\put(108,25){$\scriptstyle \mu$}
\put(55,6){$\scriptstyle V\lambda^2$}
\put(0,0){$V(\lim F_2)$}\put(45,3){\vector(1,0){45}}\put(93,0){$VF_2$}
\end{picture}\end{center}
Now we claim that $\<\lim F_1,p,\lim F_2>$ is the limit of $F$, and that
the limiting cone is defined by the pair of natural transformations
$\<\lambda^1,\lambda^2>$.
For suppose we have an object, $\<A,f,B>$ and a cone
$\kappa:\<A,f,B>\to F$. $\kappa$ can be considered as a pair
of natural transformations, $\kappa^1:A\to F_1$ and
$\kappa^2:B\to F_2$. Since $F_1$ and $F_2$ have limits there
must exist unique maps $a:A\to \lim F_1$ and $b:B\to \lim F_2$
which factor $\kappa^1$ and $\kappa^2$ through $\lambda^1$ and
$\lambda^2$ respectively.
Consider the following diagram of natural transformations.
\begin{center}\begin{picture}(250,130)
\put(120,116){$\scriptstyle f$}
\put(30,110){$UA$}\put(55,113){\vector(1,0){130}}\put(190,110){$VB$}
\put(47,102){\vector(1,-2){16}}\put(60,82){$\scriptstyle Ua$}
\put(186,102){\vector(-1,-2){16}}\put(160,82){$\scriptstyle Vb$}
\put(110,61){$\scriptstyle p$}
\put(50,55){$U(\lim F_1)$}\put(97,58){\vector(1,0){37}}\put(145,55){$V(\lim F_2)$}
\put(63,50){\vector(-1,-2){16}}\put(60,25){$\scriptstyle U\lambda^1$}
\put(170,50){\vector(1,-2){16}}\put(160,25){$\scriptstyle V\lambda^2$}
\put(110,6){$\scriptstyle \mu$}
\put(25,0){$UF_1$}\put(55,3){\vector(1,0){130}}\put(185,0){$VF_2$}
\put(15,55){$\scriptstyle U\kappa^1$}\put(35,102){\vector(0,-1){85}}
\put(203,55){$\scriptstyle V\kappa^2$}\put(200,100){\vector(0,-1){85}}
\end{picture}\end{center}
The outer square of this diagram commutes because $\kappa$ is an
arrow in the comma category. The two inner triangles commute by definition
of $a$ and $b$. The lower inner square commutes by definition of $p$.
Now we wish to show that the upper inner square commutes. We do this
by showing that the cone $(V\lambda^2).(Vb).f$ is identical to the cone
$(V\lambda^2).p.(Ua)$. Since
there must be a {\em unique\/} arrow which
factors this cone through the limiting cone $V\lambda^2$, we can conclude
that the arrows $(Vb).f$ and $p.(Ua)$ must be identical. This is the
required commutativity condition. But we have
$$\begin{array}{rcll}
(V\lambda^2).(Vb).f &=& (V\kappa^2).f &\ \hbox{definition of $b$}\\
&=& \mu.(U\kappa^1)&\ \hbox{outer square commutes}\\
&=& \mu.(U\lambda^1).(Ua)&\ \hbox{definition of $a$}\\
&=& (V\lambda^2).p.(Ua)&\ \hbox{lower square commutes}
\end{array}$$
This proves the required commutativity, which shows that $\<a,b>$ is
an arrow in $\UV$ and that it factors $\kappa$. That $\<a,b>$ is
the unique such arrow follows from the fact that $a$ must factor
$\kappa^1$ through the limiting cone $\lambda^1$, so $a$ is the
unique such arrow. Similarly, $b$ must factor $\kappa^2$
through $\lambda^2$, and so is unique.
\end{proof}
Note that the proof gives an explicit construction of limits in a
comma category when the conditions of the theorem are satisfied.
The same technique allows us to construct colimits:
\begin{corollary}
If $\A$ and $\B$ have all $\J$-colimits and $U$ preserves $\J$-colimits then
$\UV$ has all $\J$-colimits.
\end{corollary}
\begin{proof}
For any functor $U:\A \to C$, let $U\op$
be the corresponding functor $U\op: \A\op \to C\op$. Observe that
(U\darrow V)\op = (V\op\mathord{\darrow}U\op).
\end{proof}
With rather more work we may show that under appropriate conditions
$\UV$ is closed.
\begin{theorem}
Suppose that $\A$ and $\B$ are monoidal closed, and that $\C$ is monoidal.
Suppose further that $F:\A\to\C$ is a strong monoidal functor, that
$G:\B\to\C$ is (lax) monoidal, and that $\A$ has all pullbacks. If $F$
admits a right adjoint, $R$, then $F\darrow G$ is closed.
\end{theorem}
\noindent{\it Proof Outline}: The proof is in three stages. Under
the assumptions of the theorem we show:
\begin{enumerate}
\item $R$ is monoidal and hence that $RG$ is monoidal;
\item $F\darrow G$ is isomorphic to $1_\A\darrow RG$; and finally
\item For any monoidal functor $H:\A\to\B$, $1_\A\darrow H$
is closed.
\end{enumerate}
We adopt the following notation. Suppose that $F \dashv R$. For any
arrow $g:FA\to B$ denote the adjoint transpose by $g^\sharp: A\to RB$.
Dually, denote the adjoint transpose of $f:A\to RB$ by $f^\flat:FA \to B$.
Observe that for appropriate arrows $f,g$ and $g'$ we have
\begin{eqnarray*}
(g'g)^\sharp &=& (Rg')g^\sharp\\
\bigl(g(Ff)\bigr)^\sharp &=& g^\sharp f.
\end{eqnarray*}
The dual results, $(ff')^\flat = (f^\flat)(Ff')$ and
$\bigl((Rg')f\bigr)^\flat=g'f^\flat$ will also be useful.
We now proceed with the proofs of the three lemmas which prove the
theorem.
\begin{lemma}
Let $F:\A\to\C$ be strong monoidal and have a right adjoint, $R$.
Then $R$ is monoidal.
\end{lemma}
\begin{proof}
Let $\phi:FA\otimes FB \to F(A\otimes B)$ and $\widehat\phi: I \to FI$ be
the isomorphisms which make $F$ monoidal.
Define $\psi:RX\otimes RY \to R(X\otimes Y)$ to be the adjoint transpose
of the composite
F(RX\otimes RY) \arrow{\phi^{-1}} FRX \otimes FRY \arrow{\epsilon\otimes\epsilon} X\otimes Y;
and $\widehat\psi:I\to RI$ to be $(\widehat\phi^{-1})^\sharp$.
To show that $\phi$ and $\widehat\phi$ make $R$ into a monoidal functor, we
must show that they satisfy the coherence conditions. We give here the
proof of the associativity condition. The proofs of the other two
conditions are similar.
$F$ is monoidal, so we know that the following commutes:
% phi*1 phi
% (FRX* FRY)*FRZ -------> F(RX*RY)*FRZ -------> F((RX*RY)*RZ)
% | |
% alpha | | F(alpha)
% | |
% v 1*phi phi v
% FRX*(FRY*FRZ) -------> FRX*F(RY*RZ) -------> F(RX*(RY*RZ))
\begin{center}\setlength{\unitlength}{1.1pt}\begin{picture}(340,70)
\put(105,60){$\phi\otimes 1$} \put(230,60){$\phi$}
\put(0,50){$(FRX\otimes FRY)\otimes FRZ$}\put(105,53){\vector(1,0){20}}
\put(130,50){$F(RX\otimes RY)\otimes FRZ$}
\put(225,53){\vector(1,0){20}}
\put(250,50){$F\bigl((RX \otimes RY) \otimes RZ\bigr)$}
\put(45,28){$\alpha$}\put(55,47){\vector(0,-1){35}}
\put(285,47){\vector(0,-1){35}}\put(290,28){$F\alpha$}
\put(105,10){$1 \otimes \phi$} \put(230,10){$\phi$}
\put(0,0){$FRX\otimes(FRY\otimes FRZ)$}\put(105,3){\vector(1,0){20}}
\put(130,0){$FRX\otimes F(RY\otimes RZ)$}
\put(225,3){\vector(1,0){20}}
\put(250,0){$F\bigl(RX \otimes(RY \otimes RZ)\bigr)$}
\end{picture}\end{center}
Rearrange to obtain the equation
\alpha (\phi^{-1}\otimes 1) \phi^{-1} = (1\otimes \phi^{-1})\phi^{-1} F\alpha.
Compose both sides of the equation
with $\epsilon\otimes(\epsilon\otimes\epsilon)$. Then the
left hand side of the new equation is:
\begin{eqnarray*}
\lefteqn{
\bigl(\epsilon\otimes(\epsilon\otimes\epsilon)\bigr)\alpha (\phi^{-1}\otimes 1)\phi^{-1}}\\
&=& \alpha (\psi^\flat \otimes \epsilon) \phi^{-1}\\
&=& \alpha ((\epsilon(F\psi)) \otimes \epsilon) \phi^{-1}\\
&=& \alpha (\epsilon\otimes\epsilon) \phi^{-1} F(\psi\otimes 1)\\
&=& \alpha \psi^\flat F(\psi\otimes 1)
\end{eqnarray*}
The right side of the new equation is
\begin{eqnarray*}
\lefteqn{\bigl(\epsilon\otimes(\epsilon\otimes\epsilon)\bigr) (1\otimes\phi^{-1}) \phi^{-1} (F\alpha)}\\
&=& (\epsilon \otimes \psi^\flat) \phi^{-1} (F\alpha)\\
&=& \bigl(\epsilon\otimes\bigl(\epsilon(F\psi)\bigr)\bigr)\phi^{-1}(F\alpha)\\
&=& (\epsilon\otimes\epsilon)\phi^{-1} F(1\otimes \psi) (F\alpha)\\
&=& \psi^\flat F(1\otimes \psi) (F\alpha)
\end{eqnarray*}
Apply $\sharp$ to both sides of the new equation and
simplify using the properties of $\sharp$ to obtain the required condition
$$ (R\alpha) \psi (\psi\otimes 1) =
\psi (1\otimes \psi) \alpha.
\end{proof}
\begin{lemma}
Let $R:\C\to \A$ be a right adjoint of $F$, considered as monoidal
functor as described in the previous lemma.
Under the conditions of the theorem $F\darrow G$ and $1_\A \darrow RG$
are isomorphic monoidal categories.
\end{lemma}
\begin{proof}
To each object $FA \arrow{f} GB$ associate the corresponding object
$A \arrow{f^\sharp} RGB$. It is straightforward to show that this
correspondence can be extended to an isomorphism of categories.
Now we show that the tensor product of the two categories coincide.
Let $\gamma$ be the natural transformation $GB_1 \otimes GB_2 \to
G(B_1\otimes B_2)$. Let $\phi$ be the natural isomorphism $FA_1 \otimes
FA_2 \to F(A_1 \otimes A_2)$. Denote the corresponding transformation for
$R$ by $\psi$, recalling that
$\psi=((\epsilon\otimes\epsilon)\phi^{-1})^\sharp$. Hence, the
transformation for the composite functor $RG$ is $(R\gamma)\psi$.
Consider two objects, $FA_1 \arrow{f_1} GB_1$ and $FA_2 \arrow{f_2} GB_2$.
Applying $\sharp$ and then taking the tensor product in $1\darrow RG$
results in the composite arrow
A_1\otimes A_2\arrow{f_1^\sharp \otimes f_2^\sharp} RGB_1 \otimes RGB_2
\arrow{(R\gamma)\psi} RG(B_1 \otimes B_2).
We want to show that this arrow is identical to the result of first
taking tensor product in $F\darrow G$ and then applying $\sharp$,
namely
(\gamma (f_1 \otimes f_2) \phi^{-1})^\sharp.
But we have
\begin{array}{ll}
(R\gamma)\psi(f_1^\sharp \otimes f_2^\sharp)\\
= (R\gamma) ((\epsilon \otimes \epsilon) \phi^{-1})^\sharp (f_1^\sharp \otimes f_2^\sharp) & \mbox{definition of $\psi$}\\
= \bigl(\gamma (\epsilon \otimes \epsilon) \phi^{-1} F(f_1^\sharp \otimes f_2^\sharp)\bigr)^\sharp & \mbox{properties of $\sharp$}\\
= \bigl(\gamma (\epsilon \otimes \epsilon) (F(f_1^\sharp) \otimes F(f_2^\sharp)) \phi^{-1} \bigr)^\sharp & \mbox{$\phi$ is natural}\\
= \bigl(\gamma (\epsilon F(f_1^\sharp) \otimes \epsilon F(f_2^\sharp)) \phi^{-1} \bigr)^\sharp \\
= \bigl(\gamma (f_1 \otimes f_2) \phi^{-1}\bigr)^\sharp,\\
\end{array}
as required.
\end{proof}
We now turn to the final lemma.
\begin{lemma}
Let $\A$ and $\B$ be closed monoidal categories, and $H:\A\to\B$ be a
monoidal functor. Suppose that $\A$ has pullbacks. Then the monoidal
category $1_\A\darrow H$ is closed.
\end{lemma}
\begin{proof}
Denote the natural transformation $HB_1 \otimes HB_2 \to H(B_1 \otimes
B_2)$ by $\gamma$.
Let $\<A_1,f_1, B_1>$ and $\<A_2,f_2, B_2>$ be two objects of $1 \darrow H$.
We show that
tensor product has a right adjoint by constructing an object universal from the
functor $\<A_1,f_1, B_1> \otimes -$ to $\<A_2,f_2, B_2>$.
Consider the pullback
% pi2
% X -------------------------------> H[B1,B2]
% | | |
% |-- | (He gamma)#
% | v
% pi1 | [HB1, HB2]
% | |
% | | [f1, 1]
% v [1,f2] v
% [A1, A2] -----------------------> [A1, HB2]
\begin{center}\setlength{\unitlength}{1.1pt}\begin{picture}(200,100)
\put(80,90){$\pi_2$}
\put(15,80){$X$}\put(25,82){\vector(1,0){95}}\put(125,80){$H[B_1,B_2]$}
\put(10,40){$\pi_1$}\put(20,78){\vector(0,-1){65}}
\put(145,75){\vector(0,-1){26}}\put(150,60){$((H\epsilon)\gamma)^\sharp$}
\put(125,40){$[HB_1,HB_2]$}
\put(145,35){\vector(0,-1){26}}\put(150,20){$[f_1,1]$}
\put(70,10){$[1,f_2]$}
\put(0,0){$[A_1,A_2]$}\put(35,5){\vector(1,0){85}}\put(125,0){$[A_1,HB_2]$}
\end{picture}\end{center}
We will show that the top line of this diagram is the required universal
object. Firstly, we claim that the universal arrow to $\<A_2,f_2,B_2>$ is
given by
% f1*pi2 gamma
% A1 * X -------> HB1 * H[B1,B2]-------> H(B1 * [B1,B2])
% | |
% | |
% pi1 b | | He
% | |
% v f2 v
% A2 ---------------------------------> HB2
\begin{center}\setlength{\unitlength}{1.1pt}\begin{picture}(250,80)
\put(40,70){$f_1\otimes\pi_2$}\put(165,70){$\gamma$}
\put(0,60){$A_1\otimes X$}\put(40,62){\vector(1,0){30}}
\put(75,60){$HB_1\otimes H[B_1,B_2]$}\put(155,62){\vector(1,0){30}}
\put(190,60){$H(B_1 \otimes [B_1,B_2])$}
\put(0,30){$\pi_1^\flat$}\put(15,58){\vector(0,-1){45}}
\put(225,58){\vector(0,-1){45}}\put(230,30){$H\epsilon$}
\put(120,6){$f_2$}
\put(10,0){$A_2$}\put(25,3){\vector(1,0){190}}\put(215,0){$HB_2$}
\end{picture}\end{center}
To see that this square commutes, apply $\flat$ to both directions around
the pullback square. It is immediate that $([1,f_2] \pi_1)^\flat$ equals
$(f_2\pi_1^\flat)$. For the other direction, observe from standard
properties of adjunctions that $[f_1,1] = (\epsilon(f_1 \otimes 1))^\sharp$.
Hence,
\begin{eqnarray*}
\lefteqn{ \bigl([f_1,1]((H\epsilon) \gamma)^\sharp \pi_2\bigr)^\flat}\\
&=& [f_1,1]^\flat (1\otimes ((H\epsilon)\gamma)^\sharp)(1\otimes \pi_2)\\
&=& \epsilon (1\otimes ((H\epsilon)\gamma)^\sharp)(f_1\otimes \pi_2)\\
&=& (H\epsilon) \gamma (f_1\otimes \pi_2),
\end{eqnarray*}
as required.
Suppose now that there exists a commuting square
% f1*g gamma
% A1 * Y -------> HB1 * HC -------> H(B1 * C)
% | |
% | |
% p | | Hq
% | |
% v f2 v
% A2 ------------------------------> HB2
\begin{center}\setlength{\unitlength}{1.1pt}\begin{picture}(250,80)
\put(40,70){$f_1\otimes g$}\put(140,70){$\gamma$}
\put(0,60){$A_1\otimes Y$}\put(40,62){\vector(1,0){30}}
\put(75,60){$HB_1\otimes HC$}\put(130,62){\vector(1,0){30}}
\put(165,60){$H(B_1 \otimes C)$}
\put(0,30){$p$}\put(15,58){\vector(0,-1){45}}
\put(190,58){\vector(0,-1){45}}\put(195,30){$Hq$}
\put(90,6){$f_2$}
\put(10,0){$A_2$}\put(25,3){\vector(1,0){150}}\put(180,0){$HB_2$}
\end{picture}\end{center}
$\B$ is closed, so $q$ can be factored into
$\epsilon(1\otimes q^\sharp)$. By the naturality of
$\gamma$, $\bigl(H(1\otimes q^\sharp)\bigr) \gamma$ is equal to
$\gamma (1 \otimes Hq^\sharp)$, so we obtain
f_2p = (H\epsilon)\gamma \bigl(f_1\otimes(Hq^\sharp) g\bigr).
Applying $\sharp$ to both sides of this equation shows that the following
square commutes.
% g Hq#
% Y -------------> HC--------------> H[B1,B2]
% | |
% | | (f1*1)#
% | v
% p#| [A1,HB1*H[B1,B2]]
% | |
% | | [1, (He) gamma]
% v [1,f2] v
% [A1, A2] -----------------------> [A1, HB2]
\begin{center}\setlength{\unitlength}{1.1pt}\begin{picture}(250,100)
\put(30,90){$g$}\put(85,90){$H(q^\sharp)$}
\put(15,80){$Y$}\put(25,82){\vector(1,0){25}}\put(55,80){$HC$}
\put(70,82){\vector(1,0){35}}\put(110,80){$H[B_1,B_2]$}
\put(10,40){$p^\sharp$}\put(20,78){\vector(0,-1){65}}
\put(145,78){\vector(0,-1){26}}\put(150,60){$(f_1\otimes 1)^\sharp$}
\put(125,40){$[A_1,HB_1\otimes H[B_1,B_2]$}
\put(145,38){\vector(0,-1){26}}\put(150,20){$[1,(H\epsilon)\gamma]$}
\put(70,10){$[1,f_2]$}
\put(0,0){$[A_1,A_2]$}\put(30,5){\vector(1,0){90}}\put(125,0){$[A_1,HB_2]$}
\end{picture}\end{center}
Consider the right side of this square. Observe that
[1,(H\epsilon)\gamma](f_1\otimes 1)^\sharp
= ((H\epsilon)\gamma(f_1 \otimes 1))^\sharp.
Now consider the right side of the pullback square
that defines $X$.
\begin{eqnarray*}
[f_1,1] ((H\epsilon)\gamma)^\sharp
&=& (\epsilon(f_1\otimes 1))^\sharp ((H\epsilon)\gamma)^\sharp\\
&=& (\epsilon(f_1\otimes 1)(1\otimes ((H\epsilon)\gamma)^\sharp))^\sharp\\
&=& (\epsilon(1\otimes((H\epsilon)\gamma)^\sharp)(f_1\otimes 1))^\sharp\\
&=& ((H\epsilon)\gamma(f_1\otimes 1))^\sharp
\end{eqnarray*}
So we know that the right arrow of this square is the same as the right
arrow of the pullback square defining $X$. But then there must exist a
unique map $r:Y\to X$ such that $\pi_2 s = (Gq^\sharp) g$ and $\pi_1 s =
p^\sharp$. The first equation is precisely the condition that
$\<s,q^\sharp>$ be a well-defined map from $\<Y,g,C>$ to
$\<X,\pi_2,[B_1,B_2]>$. The second shows that $\<s,q^\sharp>$ factors the
original map $\<p,q>$ through the counit of the adjunction. Uniqueness
follows from the unique factorization of $q$ through $\epsilon$ and
properties of pullbacks.
\end{proof}
A fine example related to this construction is provided by the
partially ordered multisets motivating this work. A pomset
$p=\<P,\mu,\Sigma>$ is just a poset $P$, labeled by a function
$\mu:V(P)\to\Sigma$ for some set $\Sigma$. This makes it an object of
$\Pom=\Pos\comma\Set$. A morphism of pomsets
$f:\<P,\mu,\Sigma>\to\<P',\mu',\Sigma'>$ consists of a monotone event
map $f:P\to P'$ on the underlying posets together with an alphabet map
or {\it translation} $t:\Sigma\to\Sigma'$ from $\Sigma$ to $\Sigma'$,
such that $t\mu=\mu'f$ (i.e., the event map and translation are
consistent with respect to the labelings). We can view $\Pom$ as the
full subcategory of $\Prom = 2! \comma {\bf Set}$, the latter generalizing
the notion of pomsets by allowing $P$ to be a preorder.
%In this paper, since the construction that we emphasize is $\D
%\comma\E$, we are interested only in labels drawn from sets.
%When more elaborately structured label sources are needed, as for the
%category $\Pos\comma{\two}$ of order ideals, the comma must be taken
%over the appropriate common denominator, here \Pos\ (so that an order
%ideal is a triple $\<P,f,\two>$ for $f:P\to\two$ monotone). Many of
%the principles developed in this paper transcend this choice of
%denominator; fixing it at \Set\ helps fix ideas.
\section{Abstract Specification of the Operations}
Having established the categorical framework for our abstract treatment
of time, we now define the operations of our algebras of behaviors.
The sense in which time is abstract is that a fixed category $\D$ of
spaces is assumed to be given as a parameter. The definitions may
therefore refer to $\D$, but will not assume that $\D$ has any a priori
structure such as labels on points or a metric between points. Each
choice of $\D$ determines an algebra of behaviors, really a class of
behaviors since we impose no cardinality bounds on the number of events
in a behavior, other than the requirement that the events of a behavior
form a set.
Most operations are of arity a small integer. On occasion however,
e.g. when certain arguments are required to have the same domain or the
same codomain, the arity will be a graph, meaning that the arguments
will be organized as a functor from that graph. For example if the
arity is the 3-vertex 2-edge graph of shape $<$ (two edges pointing to
the right) then the arguments are two morphisms with a common domain.
This is made uniform by regarding each integer arity $n$ as a discrete
(edge-less) graph with vertices 1 through $n$.
{\it Disjoint Concurrence,} {\tt dconcur}$(p,q)$, notation $p+q$. The
{\it disjoint concurrence} of behaviors $p$ and $q$ performs both $p$
and $q$ {\it concurrently}, that is, unconstrained in time. It is
defined as the coproduct $p+q$ in $\D$.
{\it Disjoint Concatenation,} {\tt dconcat}$(p,d,q)$, notation
$p;^dq$. The {\it disjoint concatenation} of behaviors $p$ and $q$
{\it with delay} $d$ performs both $p$ and $q$ as in disjoint
concurrence, but in the order $p$, then a delay $d:I+I\to d_0$, then $q$.
It is defined by the pushout
$$\commdiag{
(I+I)\otimes (p\times q) & \rTo{\pi_p+\pi_q}{} & p+q \cr
\dTo{d\otimes 1}{} & & \dTo{}{} \cr
d_0\otimes (p\times q) & \rTo{}{} & p;^dq
where the top morphism is the sum $\pi_p+\pi_q:p\times q+p\times q\to
p+q$ of the two projections $\pi_p:p\times q\to p$ and $\pi_q:p\times
q\to q$ from $p\times q$, and $(I+I)\otimes r\cong I\otimes r+I\otimes
r\cong r+r$.
{\it Concurrence,} {\tt concur}$(p\to k\leftarrow q)$, notation
$p||_kq$, or $p||q$ when $k$ is supplied by context. The {concurrence}
of behaviors $p$ and $q$ {\it over} $k$ performs both $p$ and $q$
concurrently, {\it coordinated by} $k$. It is defined as the coproduct
of the morphisms $p\to k$ and $q\to k$ in $\D/k$, the comma or slice
category of morphisms to $k$ (``objects over'' $k$), itself a morphism
to $k$ and thus retaining the coordination.
{\it Concatenation,} {\tt concat}$((p,d,q)\to k)$, notation $p;^d_k
q$. The {\it concatenation} of $p$ with $q$ performs both $p$ and $q$
concurrently, {\it coordinated by} $k$, but in the order $p$, then a
delay $d$, then $q$. It is defined as for disjoint concatenation, with
the pushout formed in $\D/k$.
{\it Local disjoint concatenation,} {\tt ldconcat}$(d,p\to L\leftarrow
q)$, notation $p\lc^d_Lq$. The {\it local disjoint concatenation} of
behaviors $p$ and $q$ with delay $d$ performs $p$ and $q$ concurrently
except that events of $p$ at a given location must be followed by a
delay $d:(I+I)\to d_0$ before performing events of $q$ at that location.
It is defined analogously to disjoint concatenation via the pushout
$$\commdiag{
(I+I)\otimes(p\times_L q) & \rTo{(\pi_p+\pi_q)\circ L_=}{} & p+q \cr
\dTo{d\otimes 1}{} & & \dTo{}{} \cr
d_0\otimes(p\times_L q) & \rTo{}{} & p\lc^d_Lq
where $L_=:p\times_L q\to p\times q$ is the standard embedding, namely
the equalizer $L_p\circ\pi_p$ and $L_q\circ\pi_q$, and the rest is as
for disjoint concatenation.
{\it Local concatenation,} $p\lc^d_{kL}q$, is the appropriate
combination of concatenation and local disjoint concatenation.
{\it Orthocurrence,} {\tt orthocur}$(p,q)$, notation $p\otimes q$. The
{\it orthocurrence} of behaviors $p$ and $q$ consists of the flow of
$p$ and $q$ past each other. It is defined as their tensor product
$p\otimes q$.
{\it Unit,} {\tt unit}, notation $I$. The {\it unit} is a one-event
behavior that flows by unnoticed. It is defined as the unit $I$ of
$\D$, being the unit for orthocurrence.
{\it Observation,} {\tt observe}$(q,r)$, notation $r^q$. The {\it
observation} of behavior $q$ by behavior $r$ is the result of observing
every stage of every event of $q$, where the stages of an event of $q$
are defined as the events of $r$. It is defined by the adjunction
$p\otimes q\to r\cong p\to r^q$, that is, ${-}^q$ is right adjoint to
${-}\otimes q$.
{\it Product,} {\tt product}$(p,q)$, notation $p\times q$. The {\it
product} of behaviors $p$ and $q$ consists of all pairs $(a,b)$ of
constituents $a$ of $p$ and $b$ of $q$, with all the structure of $p$
and $q$ preserved coordinatewise. It is defined as their ordinary
(categorical) product $p\times q$.
{\it Local product,} {\tt lproduct}$(p\to L\leftarrow q)$, notation
$p\times_L q$. The {\it local product} of behaviors $p$ and $q$
consists of all pairs $(a,b)$ such that $a$ and $b$ are $L$-colocated
(conceptually, at the same location $l\in L$). It is defined as the
pullback
$$\commdiag{
p\times_L q & \rTo{}{} & q \cr
\dTo{}{} & & \dTo{}{} \cr
p & \rTo{}{} & L
\section{The Kind Language KL}\label{sec:langs}
The kind language KL consists of terms naming certain kinds in $\SSM$.
A KL term is either a constant denoting one of the ground kinds
$\one,\two,\three,\three',$ $\R$, $\R\op$, and $\SR$, or a compound
term $\D!$ or $\D\rhd\E$ where $\D$ and $\E$ are KL terms.
We make each ground kind semiconcrete by setting its underlying set
functor $U$ to 0 at 0 and 1 elsewhere. The one exception is $\one$,
where $U(0)=1$, since $0=1$ in $\one$.
Some terms in this language are neither useful nor well-behaved, for
example $\two\rhd\one!$, which denotes a category that is not closed.
A {\it safe} term is defined by induction to be either a ground term, a
term $\D!$ where $\D$ is safe, or a term $\D!\rhd\E$ where $\D$ and
$\E$ are safe. We then take a KL {\it kind} to be the denotation in
$\SSM$ of a safe KL term.
%***** Check that the definition of cosmon includes the requirement
%that forgetful functors have left adjoints in all cases (not just
%base cases).
%\begin{proof}
%Base categories are complete by fiat. If $\D$ is complete, so is $\D!$.
%If $\D$ and $\E$ are complete then $\D\rhd\E$ must be complete because
%$U_\E$ has a left adjoint and so preserves all limits.
%\end{proof}
\begin{theorem}\label{thm:safemeansclosed}
Every safe KL kind is closed and bicomplete.
\end{theorem}
\begin{proof} This follows by induction on the structure of terms of
KL. For the base case, ground kinds are closed and cocomplete by
definition. For compound safe terms the theorem follows by induction
from Theorems 7, 8, 9, and 11, Corollary 12, Theorem 13, and the fact
that the forgetful functors of the basic kinds and those constructed by
! and $\comma$ have the necessary continuity properties and adjoints.
\end{proof}
KL kinds include $\one!$ = sets, $\one\comma\one!$ = pointed sets,
$\two!$ = preordered sets, $\one!\comma\one!$ = multisets,
$\two!\comma\one!$ = ordered multisets, $\one!!$ = categories, $\two!!$
= order-enriched categories, $\one!!!$ = 2-categories, $\three!$ =
causal spaces, $\three'!\comma\one!$ = prossets, and $\R\op!$ =
premetric spaces. It should be straightforward to verify these
correspondences from what has been said thus far about the ground kinds
and the operations.
This language provides a succinct system of names for a usefully broad
range of categories of datatypes. It suffices to name such a category
$\D$ to be assured of the presence of all operations definable by
universal constructions (limits, colimits, adjunctions, etc.) from the
monoidal category structure of $\D$.
\section{Conclusion}
\subsection{Directions For Further Work}
\def\Hom{\hbox{\rm Hom}}
We mention briefly some projects we have in mind.
{\it Working over $\Cat$.} Our techniques would appear to extend
straightforwardly to monoidal 2-categories, where the forgetful
functors are not to $\Set$ but to $\Cat$. This turns the labeling
function from the underlying set of a behavior to (the underlying set
of) an alphabet into a labeling {\it functor}. Its functoriality can
be put to good use, as in conveniently naming the closed category of
order ideals.
{\it Extensions to KL.} Currently, methods for specifying subkinds of
dynamic kinds are somewhat ad hoc, e.g., posets are acyclic
\two-categories. It would be useful to have operators that would
produce subkinds for a wide variety of {\D}, such as a single approach
to producing partial orders (as opposed to preorders) and say symmetric
metric spaces.
It would also be useful to have operators for constructing new metrics.
Indeed the present supply of metrics has been constructed ad hoc. Some
uniform way of constructing them would be useful.
Such operators would be additions to the kind language KL. The only
operations we have admitted thus far to KL are ! and $\comma$. We do
not however intend by any means that these be all. To fit in with !
and $\comma$ however these operations would need similar continuity
properties.
{\it Stochastic delay.} Another possible choice for {\D} is that of a
category of probability distributions. In other words for each pair of
events $u,v$ we specify a probability density function $\rho_{uv}:{\bf
R}\to[0,1]$ for the associated delay. Consecutive delays would be
combined using convolution
$$\rho_{uv}\otimes\rho_{vw}(y)=\int_{-\infty}^{\infty}\rho_{uv}(x)\rho_{vw}(y-x)dxdy$$
The main problems include finding a suitable ordering on
distributions and dealing with the fact that the various
distributions on delays are not independent. There is also the
question of the proper treatment of distributions which are not well
behaved and continuous (e.g., the Dirac delta function).
\subsection{Summary}
We have described a model of concurrency consisting of two orthogonal
parts, one dealing with kinds of behaviors, the other with the
behaviors themselves.
Kinds are taken to be semiconcrete monoidal categories, objects of
$\SSM$. A ``kind language'' KL is provided for naming a few basic
kinds and combining them with operations ! and $\comma$ to form
compound kinds. The ! operation turns a metric into a category of
spaces with that metric. The $\comma$ operation combines two kinds by
using one as a source of structures and the other as a source of
alphabets with which those structures may be labeled. Kinds namable in
this way are called KL kinds.
Behaviors are taken to be objects of a given kind $\D$ an object of
$\SSM$. A ``behavior language'' PSL is provided for naming basic
behaviors and combining them with a useful library of operations
suitable for concurrent programming. Although typical behaviors contain
much structure, including a metric and a labeling function, this is
{\it only} typical and not required. In general nothing is assumed
about the ``internal'' structure of a behavior, which may well be just
a simple atomic value. We are however given operations for assembling
behaviors to form larger behaviors, namely limits, colimits, and a
tensor product. These operations belong to the language PSL.
PSL is thus a true algebra of behaviors. Even though the PSL
operations are defined uniformly across the spectrum of KL kinds, their
action on complex KL kinds would appear to be as useful as if PSL had
been defined to operate explicitly on spaces with metrics and labeling
functions. Yet the meaning of PSL is defined no differently for
``atomic'' behaviors than for behaviors with complex structures. Thus
PSL acts as an algebra of behaviors in assuming no structure within its
elements yet being able to recreate that internal structure ``from
outside.''
The division of labor between KL and PSL is completely orthogonal.
``Motion'' via functors of $\SSM$, from which KL operations are drawn,
has no influence on the point sets of spaces and individual alphabets
making up any given object $\D$ of $\SSM$. This independence finds its
expression in the identity $U=U'F$ relating underlying sets, which says
that underlying sets of points and functions between them pass through
$F$ completely unscathed. Conversely, motion via functors of $\D$,
from which PSL operations are drawn, takes place relative to a fixed
$\D$ and hence has no influence on the metrics and alphabet kinds
making up $\SSM$.
That PSL operates on the ``individuals''---objects and arrows---of a
fixed $\D$ gives it the character of a first order language. Since
formation of $\D$-functor spaces is an operation of PSL, the proper
analogy is with ZF as a first order theory, where sets of individuals
are also individuals. That is, ZF and PSL are both ``internally
closed,'' both by virtue of working in a closed universe.
Unlike ZF however, which operates in the cartesian closed universe of
sets, PSL operates in a closed universe that is not presumed to be
cartesian closed, whence the need to distinguish between tensor product
$\otimes$ and ordinary product $\times$ in PSL.
This distinction arises in a natural and inevitable way from an
elementary and familiar observation: {\it the temporal accumulation
operator need not be product}. That it is product (conjunction) in the
two-valued metric logic underlying ordered time is not a necessary
facet of the logic of time.
A recent noncartesian logic is Girard's linear logic \cite{Gir87}.
Like PSL, linear logic distinguishes ordinary and tensor product. Like
Boolean logic but unlike PSL, Girard's linear logic is self-dual,
giving rise by de Morgan's law to two binary operations dual to the two
products. This prompts the following question.
\begin{quotation}
{\em Why should self-duality survive the diverging of the two products?}
\end{quotation}
To bring the concepts of PSL together we have drawn heavily on some
basic techniques that have evolved in category theory within the past
three decades, most notably those of closed categories and enriched
categories. These techniques in the dry context of a mathematics text
can seem dauntingly abstract. But just as there are good and bad
cholesterols so it is with abstractions: the bad daunt and the good
clarify. In adapting these techniques to computing practice we have
tried to leave the good abstractions intact, namely those that
simplified matters or seemed to bear on computation.
One defect of our account is that it has put relatively little emphasis
on the logical character of PSL. The adjunctions and compositions
pervading our framework contain all the essential elements of a modern
logic, yet we have not made this logical character as explicit as we
might. This may just be a reflection of the algebraic perspective
which nurtured this work. We hope that the proper balance of algebra
and logic here will become clear in due course.
\section*{Acknowledgments}
We are indebted to F.W. Lawvere both for his paper \cite{Law}
clarifying the topic of enriched categories and for much helpful
advice. We also appreciate the help we have received from the Sydney
Category Seminar, especially A.J. Power and R.F.C. Walters. The paper
was typeset using D. Knuth's TeX, L. Lamport's LaTeX macros, and P.
Taylor's diagram macros.
\bibliographystyle{alpha}
\begin{thebibliography}{CCMP91}
\bibitem[AHU74]{AHU}
A.V. Aho, J.~E. Hopcroft, and J.D. Ullman.
\newblock {\em The Design and Analysis of Computer Algorithms}.
\newblock Addison-Wesley, Reading, Mass, 1974.
\bibitem[AM75]{AM}
M.~Arbib and E.~Manes.
\newblock {\em Arrows, Structures, and Functors: The Categorical Imperative}.
\newblock Academic Press, 1975.
\bibitem[BCSW83]{BCSW}
R.~Betti, A.~Carboni, R.~Street, and R.~Walters.
\newblock Variation through enrichment.
\newblock {\em J. Pure and Applied Algebra}, 29:109--127, 1983.
\bibitem[Bir37]{Birk37}
G.~Birkhoff.
\newblock An extended arithmetic.
\newblock {\em Duke Mathematical Journal}, 3(2), June 1937.
\bibitem[Bir42]{Birk42}
G.~Birkhoff.
\newblock Generalized arithmetic.
\newblock {\em Duke Mathematical Journal}, 9(2), June 1942.
\bibitem[CCMP91]{CCMP}
R.T Casley, R.F. Crew, J.~Meseguer, and V.R. Pratt.
\newblock Temporal structures.
\newblock {\em Math. Structures in Comp. Sci.}, 1(2):179--213, July 1991.
\bibitem[Con71]{Con}
J.H. Conway.
\newblock {\em Regular Algebra and Finite Machines}.
\newblock Chapman and Hall, London, 1971.
\bibitem[EK65]{EK66a}
Samuel Eilenberg and G.~Max Kelly.
\newblock Closed categories.
\newblock In S.~Eilenberg, D.~K. Harrison, S.~MacLane, and H.~R{\"o}hrl,
editors, {\em Proceedings of the Conference on Categorical Algebra, La Jolla,
1965}, pages 421--562. Springer-Verlag, 1965.
\bibitem[Flo62]{Flo62}
R.W. Floyd.
\newblock Algorithm 97: shortest path.
\newblock {\em Communications of the ACM}, 5(6):345, 1962.
\bibitem[Gai89]{Ga89}
H.~Gaifman.
\newblock Modeling concurrency by partial orders and nonlinear transition
systems.
\newblock In {\em Proc. REX School/Workshop on Linear Time, Branching Time and
Partial Order in Logics and Models for Concurrency}, pages 467--488,
Noordwijkerhout, The Netherlands, 1989. Springer-Verlag.
\bibitem[Gir87]{Gir87}
J.-Y. Girard.
\newblock Linear logic.
\newblock {\em Theoretical Computer Science}, 50:1--102, 1987.
\bibitem[GP87]{GP}
H.~Gaifman and V.R. Pratt.
\newblock Partial order models of concurrency and the computation of functions.
\newblock In {\em Proc. 2nd Annual IEEE Symp. on Logic in Computer Science},
pages 72--85, Ithaca, NY, June 1987.
\bibitem[Kel82]{Kel}
G.M. Kelly.
\newblock {\em Basic Concepts of Enriched Category Theory: London Math. Soc.
Lecture Notes}.
\newblock 64. Cambridge University Press, 1982.
\bibitem[Koz80]{Koz80b}
D.~Kozen.
\newblock A representation theorem for models of *-free {PDL}.
\newblock In {\em Proc. 7th Colloq. on Automata, Languages, and Programming},
pages 351--362, July 1980.
\bibitem[Koz81]{Koz81a}
D.~Kozen.
\newblock On induction vs. *-continuity.
\newblock In D.~Kozen, editor, {\em Proc. Workshop on Logics of Programs 1981,
LNCS 131}, pages 167--176. Spring-Verlag, 1981.
\bibitem[Law73]{Law}
W.~Lawvere.
\newblock Metric spaces, generalized logic, and closed categories.
\newblock In {\em Rendiconti del Seminario Matematico e Fisico di Milano,
XLIII}. Tipografia Fusi, Pavia, 1973.
\bibitem[Lew90]{Lew90}
H.~Lewis.
\newblock A logic of concrete time intervals.
\newblock In {\em Proc. 5th Annual IEEE Symp. on Logic in Computer Science},
Philadelphia, July 1990.
\bibitem[Mac71]{Mac}
S.~Mac{ }Lane.
\newblock {\em Categories for the Working Mathematician}.
\newblock Springer-Verlag, 1971.
\bibitem[Pra84]{Pr84}
V.R. Pratt.
\newblock The pomset model of parallel processes: {Unifying} the temporal and
the spatial.
\newblock In {\em Proc. CMU/SERC Workshop on Analysis of Concurrency, LNCS
197}, pages 180--196, Pittsburgh, 1984. Springer-Verlag.
\bibitem[Pra86]{Pr86}
V.R. Pratt.
\newblock Modeling concurrency with partial orders.
\newblock {\em Int. J. of Parallel Programming}, 15(1):33--71, February 1986.
\bibitem[Pra89]{Pr89a}
V.R. Pratt.
\newblock Enriched categories and the {Floyd-Warshall} connection.
\newblock In {\em Proc. First International Conference on Algebraic Methodology
and Software Technology}, pages 177--180, Iowa City, May 1989.
\bibitem[RF68]{RF}
P.~Robert and J.~Ferland.
\newblock G\'en\'eralisation de l'algorithme de {W}arshall.
\newblock {\em Revue francaise d'Informatique et de Recherche Operationnelle},
2(7):13--25, 1968.
\bibitem[Roy59]{Roy59}
B.~Roy.
\newblock Transitivit\'e et connexit\'e.
\newblock {\em Comptes Rendues Acad. Sci.}, 249:216--218, 1959.
\bibitem[Tar85]{Tar85}
Andrzej Tarlecki.
\newblock Bits and pieces of the theory of institutions.
\newblock In {\em Category Theory and Computer Programming}, Lecture Notes in
Computer Science~240, pages 334--363, Guildford, UK, 1985. Springer-Verlag.
\bibitem[Vic89]{Vic89}
S.~Vickers.
\newblock {\em Topology via Logic}.
\newblock Cambridge University Press, 1989.
\bibitem[War62]{War62}
S.~Warshall.
\newblock A theorem on {B}oolean matrices.
\newblock {\em Journal of the ACM}, 9(1):11--12, 1962.
\end{thebibliography}
\end{document}